全屏適配
全面屏適配分爲javascript
-
沉浸式適配java
沉浸式適配是指:將畫面延展到 狀態欄 或者 改變狀態欄,把狀態欄顏色改爲和app相近的顏色。android
-
劉海適配api
劉海適配是指:劉海部分的處理。app
適配沉浸式
隱藏actionbar 更改 statusbar 顏色
<style name="thememe" parent="Theme.AppCompat.NoActionBar"> <item name="android:statusBarColor">@android:color/holo_blue_bright</item> </style> 主題繼承一個 noacitonbar 主題 idtem 添加一個statusbarcolor 此處設置透明,則爲黑色。 若是設置爲紅色則爲紅色
隱藏actionbar statusbar透明
隱藏actionbar 隱藏statusbar 其中,單獨設置statusbar透明是不起做用的。須要加上windowTranslucentStatus 此時狀態欄是透明瞭,可是狀態欄沒有隱藏,只是透明瞭,而且佈局往上移。此時若是想沉浸式,解決方案能夠在本身佈局添加一個statusbar高的底色佈局 <style name="thememe1" parent="Theme.AppCompat.NoActionBar"> <!-- 設置statusBarColor 爲透明 單獨設置statusbar透明是不起做用的,此處透明會使佈局往上移--> <item name="android:windowTranslucentStatus">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style>
隱藏actionbar 隱藏statusbar 底部導航欄透明(不建議直接使用)
隱藏actionbar 隱藏statusbar 底部導航欄透明 不建議直接使用 <style name="thememe2" parent="Theme.AppCompat.NoActionBar"> <!-- 設置底部導航欄爲透明 且導航欄會遮住佈局 --> <item name="android:windowTranslucentNavigation">true</item> <!-- 設置statusBarColor 爲透明 單獨設置statusbar透明是不起做用的,此處透明會使佈局往上移--> <item name="android:windowTranslucentStatus">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style>
隱藏actionbar 隱藏statusbar 全屏顯示
隱藏actionbar 隱藏statusbar 底部導航欄透明 <style name="thememe2" parent="Theme.AppCompat.NoActionBar"> <!-- 設置底部導航欄爲透明 且導航欄會遮住佈局 --> <item name="android:windowTranslucentNavigation">true</item> <!-- 設置statusBarColor 爲透明 單獨設置statusbar透明是不起做用的,此處透明會使佈局往上移--> <item name="android:windowTranslucentStatus">true</item> <item name="android:statusBarColor">@android:color/transparent</item> </style> **代碼設置屬性,在setcontentview後面調用** protected void hideBottomUIMenu1(){ //隱藏虛擬按鍵,而且全屏 Toast.makeText(this,"api dayu 19",Toast.LENGTH_SHORT).show(); //for new api versions. View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE // 註釋和不註釋沒有變化 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // 註釋和不註釋沒有變化 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // 註釋和不註釋沒有變化 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 隱藏導航欄 | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 全屏 即隱藏電量 狀態欄.可是劉海屏有黑邊,須要配合安卓10屬性 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY//拉出來,幾秒不操做本身彈回去 | View.SYSTEM_UI_FLAG_IMMERSIVE//拉出來,不會本身回去 ; decorView.setSystemUiVisibility(uiOptions); }
其中==注意==幾個屬性值的效果變化,IMMERSIVE 和 IMMERSIVE_STICKY 一個拉出底部導航欄,過幾秒會縮回去,一個不會。ide
劉海適配
上面的沉浸式適配,在有劉海的全面屏下是有瑕疵的,當全屏顯示,狀態欄部分會變成一條黑色。 若是app是遊戲來講是不太友好的 試了不少屬性,若是隱藏電量顯示,劉海部分就爲黑色,若是不隱藏,又不美觀。佈局
在安卓大於等於28 10.0的系統上,有了適配劉海的新的api能夠解決這個問題。ui
protected void hideBottomUIMenu2(){ //隱藏虛擬按鍵,而且全屏 if (Build.VERSION.SDK_INT >= 28) { Toast.makeText(this,"api dayu 28",Toast.LENGTH_SHORT).show(); //for new api versions. View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_LAYOUT_STABLE // 註釋和不註釋沒有變化 | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // 註釋和不註釋沒有變化 | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // 註釋和不註釋沒有變化 | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar 隱藏導航欄 | View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar 全屏 即隱藏電量 狀態欄.可是劉海屏有黑邊,須要配合安卓10屬性 | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY //拉出來,幾秒不操做本身彈回去 ; decorView.setSystemUiVisibility(uiOptions); getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); WindowManager.LayoutParams lp = getWindow().getAttributes(); lp.layoutInDisplayCutoutMode = WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;//新屬性,能將全屏的劉海部分黑邊去掉,同時這個有三個模式,能夠參考文檔 } }