Android中實現沉浸式狀態欄的功能

Android中實現沉浸式狀態欄的功能

1. 先上效果圖,實現沉浸式狀態欄有兩種方式,一種是通過寫Theme主題的方式,另一種是寫代碼的方式。若要使多個頁面出現沉浸式狀態欄,則使用主題的方式更方便,如果只要使單個頁面出現,則使用代碼方式更好!當然了,看個人喜好而去。
在這裏插入圖片描述
2. 先來介紹寫主題的方式
2.1 先在res包下新建values-v19和values-v21兩個包,爲了兼容Android高低版本
在這裏插入圖片描述
2.2 然後分別在包中新建styles.xml文件

2.2.1 values-v19包中styles.xml文件中的內容爲:

 <style name="AppTheme.TransparentStausBar" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>   				//取消系統默認的actionBar
        <item name="windowNoTitle">true</item>						//取消actionBar的標題
        <item name="android:windowTranslucentStatus">true</item>	//允許頁面可以拉伸到頂部狀態欄並且定義頂部狀態欄透明,安卓4.4纔有
        <item name="android:windowTranslucentNavigation">true</item>//設置虛擬鍵透明
 </style>

2.2.2 values-v21包中styles.xml文件中的內容爲:

 <style name="AppTheme.TransparentStausBar" parent="Theme.AppCompat.Light.DarkActionBar">
        <item name="windowActionBar">false</item>								//取消系統默認的actionBar
        <item name="windowNoTitle">true</item>									//取消actionBar的標題
        <item name="android:windowTranslucentStatus">false</item>				//允許頁面可以拉伸到頂部狀態欄並且定義頂部狀態欄透明,安卓4.4纔有
        <item name="android:windowTranslucentNavigation">true</item>			//設置虛擬鍵透明
        <item name="android:statusBarColor">@android:color/transparent</item>	//設置狀態欄的顏色爲透明
</style>

2.2.3 在values包中的styles.xml文件中添加一個空的,起到後備作用

<style name="AppTheme.TransparentStausBar" parent="AppTheme">
    
</style>

2.2.4 最後一點需要在對應的佈局文件中添加,然後在AndroidManifest.xml引用

android:fitsSystemWindows="true"

在這裏插入圖片描述
在這裏插入圖片描述
寫主題的方式就算完成了

3.再來介紹一下寫代碼的方式

private void initBar() {
		getWindow().requestFeature(Window.FEATURE_NO_TITLE);		//取消狀態欄的標題
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//判斷SDK的版本是否>=21
            Window window = getWindow();
            window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);			//允許頁面可以拉伸到頂部狀態欄並且定義頂部狀態欄透名
            window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION |  						//設置全屏顯示
                    View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
            window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS);
            window.setStatusBarColor(Color.TRANSPARENT);			//設置狀態欄爲透明
            window.setNavigationBarColor(Color.TRANSPARENT);		//設置虛擬鍵爲透明
        }
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();											//將actionBar隱藏
    }

寫代碼的方式也完成了

Tip: 小白,寫得不好請見諒。若有不對的地方請留言。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章