android設置狀態欄顏色:android狀態欄透明代碼

對於Android來說什麼是沉浸式狀態欄?給個圖你對比看就懂了:使用kotlin實現沉浸式狀態欄

非沉浸式使用kotlin實現沉浸式狀態欄

沉浸式

對比上面兩張照片後,沉浸式和非沉浸式狀態欄的區別就出來了,當然沉浸式狀態欄還有其他種類。比如像你在玩遊戲的時候,你如果沒有在狀態欄的位置下拉,狀態欄是不會出來的,這種也是常用的沉浸式狀態欄一種。

好,了解完沉浸式狀態欄和非沉浸式狀態欄的區別後,我們現在開始真正地去實現它。

首先,我們要先去判斷我們的Android版本,如果是大於5.0,我們就適配我們的沉浸式狀態欄。接着,我們需要獲取我們最上層的View來進行操作,Android頂層的View是window,所以我們先獲取window,然後去設置我們的systemUiVisibility為全屏且需要狀態欄,當然別忘了設置statusBar為透明。代碼如下:

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        //判斷Android的版本是否大於5.0
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){

            //獲取最上層的View進行操作
            window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)

            window.statusBarColor = Color.TRANSPARENT//透明
        }
    }
}

還有,我們需要在AndroidManifest文件下設置我們activity的主題為NoActionBar,代碼如下:

  <activity android:name=".MainActivity"
            android:theme="@style/Theme.AppCompat.Light.NoActionBar">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

最後貼一下我的XML布局文件的代碼,方便小白閱讀實現:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

  <LinearLayout
      android:background="@color/colorAccent"
      android:layout_height="match_parent"
      android:layout_width="match_parent"/>
>
</androidx.constraintlayout.widget.ConstraintLayout>

這樣我們的沉浸式的狀態欄就實現了,這是我們第一種實現方式,那麼如果想實現遊戲全屏沉浸式狀態欄又該怎麼樣做呢?別急,我早有準備,我們其他代碼不改,在我們的systemUiVisibility的設置項中參考以下代碼,添加上去就能輕鬆實現。這個時候,我們的導航欄和狀態欄都被隱藏了,只有在拉下的情況會出現,過一段時間又會自動地縮回去。

       window.decorView.systemUiVisibility = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
                    .or(View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION)
                    .or(View.SYSTEM_UI_FLAG_HIDE_NAVIGATION)
                    .or(View.SYSTEM_UI_FLAG_FULLSCREEN)
                    .or(View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY)

這樣我們的沉浸式狀態欄就輕鬆地實現好了,如果有什麼不對的地方,歡迎大家指出一起探討哦!

原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/221019.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
投稿專員的頭像投稿專員
上一篇 2024-12-09 12:47
下一篇 2024-12-09 12:47

相關推薦

發表回復

登錄後才能評論