在定制TV版本中,經常需要去掉StatusBar的需求,那么如何更好更方便的去掉StatusBar呢?
StatusBar是Android系統中重要的組成部分,可以看到一些提醒圖標已經通過它可以下拉出通知提醒和快捷設置,整個的代碼在工程SystemUI中。
一拿到最簡單方法當然是直接刪除SystemUI.apk,但是如果真的這樣做的話,系統將會無法顯示牆紙。這是因為ImageWallpaper這個顯示牆紙的服務也在SystemUI中。參考SystemUI的manifest.xml文件,里面還有好多服務需要運行,所以直接去掉這個apk的做法肯定是不行的。
如果不能去掉只能去看真正的StatusBar的代碼在哪里了,在整個里面主要涉及到三個類:


這三個類很有意思的相互關聯,看類的名稱可以看出,一個是控制類(PhoneStatusBar),另外兩個是界面類。其中 StatusBarWindowView是整個View,包含狀態欄(PhoneStatusbarView)和底下的展開(PannelHodler),通過super_status_bar.xml,我們可以看出之際的結構如下:
:


再參考代碼,我們可以畫出整個操作StatusBar的流程如下:


回到剛才我們的問題,如果要屏蔽StatusBar,我們只要不讓StaatusBarWindowView 顯示就可以了,所以我們只要找到
代碼


mStatusBarWindow.setVisibility(View.GONE);
至此,對於StatusBar的分析結束。