android 电话 状态栏,Android透明式状态栏、导航栏实现
有很多應用有透明式狀態欄、導航欄,表現形式是在不同頁面里,狀態欄可以與最上面的背景圖片或者顏色保持一致。典型的案例就是手Q:(如圖所示)
很明顯,在手Q中主要的幾個頁面的標題欄(ActionBar位置),都是湖藍色,而狀態欄也是湖藍色。QQ空間和好友資料的最上面的控件的自定義皮膚而狀態欄是以透明背景疊加在其上。(眼尖的博友已經發現了圖片都是iPhone的,Android手Q界面差不多的,自行腦補!!!)
一、顯示效果
二話不說,先看一下透明狀態欄、導航欄的效果:(觸摸向上滑動,顯示出透明的狀態欄導航欄,一段時間后透明的狀態欄導航欄自動隱藏)
二、實現功能
1.步驟:
1) 創建一個工程,主布局就先做一個ImageView,自己找個好看的圖片做src。
2) 在Activity重寫的onCreate方法中獲得窗口視圖對象(DecorView)
3) 設置DecorView的SystemUiVisibility
4) 設置導航條、狀態欄的顏色–>透明
5) 獲取當前Activity的ActionBar并隱藏
2.具體代碼和注釋:
獲取DecorView對象
@Override
protected void onCreate(Bundle savedInstanceState) {
...
View decorView = getWindow().getDecorView();
...
}
設置SystemUiVisibility
int option = View.SYSTEM_UI_FLAG_FULLSCREEN // 全屏標記
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // 布局全屏標記,避免退出全屏模式時內容被覆蓋
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // 隱藏導航欄標記
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION // 布局隱藏導航欄標記,同理
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY // 粘性沉浸體驗
| View.SYSTEM_UI_FLAG_LAYOUT_STABLE; // 確保上述標記穩定
// 此方法用來設置系統UI的可見性,系統UI包括狀態欄、ActionBar、導航欄
devorView.setSystemUiVisibility(option);
設置狀態欄、導航欄的顏色:
getWindow().setStatusBarColor(Color.TRANSPARENT);// Color.TRANSPARENT = 0 表示#00000000即透明顏色
getWindow().setNavigationBarColor(Color.TRANSPARENT);
獲取本頁面的ActionBar并隱藏起來
ActionBar actionBar = getSupportActionBar(); // 注意:此處用的Activity繼承的是AppCompatActivity(它繼承的是FragmentActivity)
// 所以調用的是getSupport...方法,如果繼承Activity則直接調用get...方法
assert actionBar != null; // 這一句可以不理會,反正我是Ctrl + F1提示出來的,意思其實是判斷如果actionBar不為空則向下執行。
actionBar.hide();
注意:最后一點注意事項是:只支持Android API 21以上的手機
三、來點花式透明的效果:
這個花式效果其實還是很實用的。因為通常要隱藏狀態欄和導航欄的情況是看視頻或者打游戲。一般都是橫屏,因此做一個橫屏的效果。關于橫豎屏切換以及屏幕方向鎖定可以參看我的下一篇博客。
總結
以上是生活随笔為你收集整理的android 电话 状态栏,Android透明式状态栏、导航栏实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c语言的简单题目,C语言的一些简单题目,
- 下一篇: android 加载html6,WebV