文章插圖

文章插圖
對于Android來說什么是沉浸式狀態欄?給個圖你對比看就懂了:
非沉浸式
沉浸式
對比上面兩張照片后,沉浸式和非沉浸式狀態欄的區別就出來了,當然沉浸式狀態欄還有其他種類 。比如像你在玩游戲的時候,你如果沒有在狀態欄的位置下拉,狀態欄是不會出來的,這種也是常用的沉浸式狀態欄一種 。
好,了解完沉浸式狀態欄和非沉浸式狀態欄的區別后,我們現在開始真正地去實現它 。
首先,我們要先去判斷我們的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.0if (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"><LinearLayoutandroid: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)【android透明顏色代碼 android透明背景代碼】這樣我們的沉浸式狀態欄就輕松地實現好了,如果有什么不對的地方,歡迎大家指出一起探討哦!- ysl小金條新色29什么顏色,ysl小金條29口紅試色
- cmd怎么用代碼變顏色
- 現在android版本是多少 安卓最新版本號是多少
- android studio連接手機模擬器 android studio怎么運行模擬器
- android登錄頁面設計 android設計登錄頁面并實現
- Android語音播報 安卓機語音播報從哪取消
- 安卓背景透明代碼 android自定義dialog樣式
- android刷機教程 安卓刷機方法有哪幾種
- android按鈕透明效果 安卓通知欄變成透明的
- 在android應用程序中圖片應放在哪個目錄下 android圖片放在哪里
