DrawerLayout側滑菜單的使用及狀態欄實現沉浸式的透明

先來張效果圖:

  

其實就是內容裏頂層的圖片,延伸到狀態欄那裏了,並且狀態欄的那個半透明背景不顯示。

前前後後調了快1天了,也查找了很多資料,都無法實現我想要的效果。

後來發現只要2步就可以實現了:

第1步:在需要AndroidManifest把需要顯示的那個Activity的主題設爲這樣,Android.xml的設置:

<activity android:name=".MainActivity" android:theme="@style/AppTheme.NoActionBar2"/>

這裏的NoActionBar2是我自定義的:

<style name="AppTheme.NoActionBar2">
        <item name="windowActionBar">false</item>
        <item name="windowNoTitle">true</item>
        <item name="android:windowDrawsSystemBarBackgrounds">true</item>
        <item name="android:statusBarColor">@android:color/transparent</item>
    </style>

 

第2步:在Activity的Oncreate裏添加這兩句代碼即可:

View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

這樣,Activity裏的界面就變成沉浸式的效果了,即內容會延伸到狀態欄那裏,並且狀態欄的那半透明背景也會消失,這樣就和微信朋友圈裏的一樣效果了。

需要說明一下,狀態欄裏的文字是白色的(我測試的手機目前狀態欄那裏的文字都是白色),如果此時你內容也偏向白色,這樣狀態欄的文字信息很難看清,所以第2步裏的這句

View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR

是將顏色變深色。。。

如果添加了上面兩個步聚都無法實現效果,可以試下把xml裏的這句話去掉試試:

android:fitsSystemWindows="true"

另外,這樣設計只是Activity主內容實現了沉浸式的設計,但是左滑出來的菜單,狀態欄還是會有半透明的背景,要實現隱藏那半透明背景,估計差不多吧,我沒有繼續弄下去,有興趣的童鞋可以試試~

 

 

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------

補充:其他一般的Activity要將Toobar裏的顏色沉浸到標題欄裏,也只要2步即可:

第1步,設置toobar的xml文件如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@color/colorRed"
    android:fitsSystemWindows="true"
    android:orientation="vertical">

    <androidx.appcompat.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        app:navigationIcon="@drawable/icon_poi_back" />

</LinearLayout>

第2步,在Activity的onCreate設置這兩行代碼:

View decorView = getWindow().getDecorView();
        decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);

實現效果如下:

這樣實現了沉浸式的效果,但是測試時發現這樣的情況:就是黑屏再亮屏後,狀態欄又恢復默認的狀態了,這樣達不到效果。

所以也是在AndroidManifest.xml對應的Activity後面添加主題NoActionBar2(這個是我自定義的,和文章一開始介紹的那個第1步的一樣)即可

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