Android學習--系統頂部狀態欄透明化

 @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //系統版本號判斷,5.0以上系統才支持改變系統狀態欄風格功能
        if (Build.VERSION.SDK_INT>=21) {
            //拿到當前活動的DecorView
            View decorView  = getWindow().getDecorView();//拿到當前活動的DecorView
            //表示活動的佈局會顯示在狀態欄上面
            decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN);
            //setStatusBarColor()方法將狀態欄設置爲透明色
            getWindow().setStatusBarColor(Color.TRANSPARENT);
        }
        setContentView(R.layout.activity_weather);
        init_view();
    }

 

相應佈局中配置屬性android:fitsSystemWindows="true",爲狀態欄留空間,然後整體畫面不會上移。

 

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimary">

    <ImageView
        android:id="@+id/bing_pic_img"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop" />

    <ScrollView
        android:id="@+id/weather_layout"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="vertical"
            android:fitsSystemWindows="true">
            <include layout="@layout/title" />
            <include layout="@layout/now" />
            <include layout="@layout/forecast" />
            <include layout="@layout/aqi" />
            <include layout="@layout/suggestion" />
        </LinearLayout>
    </ScrollView>

</FrameLayout>


其他方法:

   View類提供了setSystemUiVisibility和getSystemUiVisibility方法,這兩個方法實現對狀態欄的動態顯示或隱藏的操作,以及獲取狀態欄當前可見性。

   setSystemUiVisibility(int visibility)方法可傳入的實參爲:

    1. View.SYSTEM_UI_FLAG_VISIBLE:顯示狀態欄,Activity不全屏顯示(恢復到有狀態的正常情況)。

    2. View.INVISIBLE:隱藏狀態欄,同時Activity會伸展全屏顯示。

    3. View.SYSTEM_UI_FLAG_FULLSCREEN:Activity全屏顯示,且狀態欄被隱藏覆蓋掉。

    4. View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN:Activity全屏顯示,但狀態欄不會被隱藏覆蓋,狀態欄依然可見,Activity頂端佈局部分會被狀態遮住。

    5. View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    6. View.SYSTEM_UI_LAYOUT_FLAGS:效果同View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN

    7. View.SYSTEM_UI_FLAG_HIDE_NAVIGATION:隱藏虛擬按鍵(導航欄)。有些手機會用虛擬按鍵來代替物理按鍵。

    8. View.SYSTEM_UI_FLAG_LOW_PROFILE:狀態欄顯示處於低能顯示狀態(low profile模式),狀態欄上一些圖標顯示會被隱藏。

 

 

 

發佈了34 篇原創文章 · 獲贊 10 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章