■目標
不允許用戶從上到下下拉狀態欄
■案1
截獲手勢,不處理該手勢。
SystemGesturesPointerEventListener
public void onPointerEvent(MotionEvent event) {
if (swipe == SWIPE_FROM_TOP) {
不調用手勢處理}
■案1效果
無效果。
adb log發現代碼確實走到了,說明這里只是一個通知機制。
■案2
在狀態欄上進行中斷手勢或者touch命令
StatusBarWindowView的onInterceptTouchEvent方法實現進行修正,直接返回true。
■案2效果
符合預期
■狀態欄知識點總結
家庭: 屬於SystemUI級別。是特殊的系統級別的UI組件。SystemUI = 狀態欄+底部導航欄+近期APP列表+截屏操作+電量警告等等
載體: 以APK形式存在
生命開始: AMS.systemReady()方法系統就緒后,startSystemUi
2兄弟布局: PhoneWindowManager.mHasSystemNavBar 狀態欄與導航欄分離(PhoneStatusBar) vs 狀態欄與導航欄合體(TabletStatusBar)
1兒子: BaseStatusBar 借助IStatusBarService處理請求 createAndAddWindows(各兄弟自己實現布局單元)

樹形結構:
1@layout.super_status_bar(StatusBarWindowView)
1.1@id/status_bar(PhoneStatusBarView)
1.1.1 @id/status_bar_contents
1.1.1.1 @id/notification_icon_area
1.1.1.1.1 @id/more_icon
1.1.1.2 @id/system_icon_area
1.1.2 @id/ticker
1.2 PanelHolder
1.2.1 @layout/status_bar_expanded
1.2.2 @layout/quick_setting
言而總之:
狀態欄包括兩大部分。最上部固定欄 和 卷簾欄。
固定欄包括 通知窗口和 固定內容。固定內容包括系統固定圖標和APP各通知圖標。
卷簾包括 擴展欄(最近APP) 和快速設定。
補充:
帶view的類都是和布局所一一對應的view。
不帶view的類都是功能類。
例如:PhoneStatusBar類的兩個成員( StatusBarWindowView mStatusBarWindow;honeStatusBarView mStatusBarView;)
PhoneStatusBar繼承自那個BaseStatusBar。
http://blog.csdn.net/yin1031468524/article/details/51532663
https://wizardforcel.gitbooks.io/deepin-android-vol3/content/7.html
■目標
不顯示狀態欄
■案
將狀態欄的高度修改為0
base/core/res/res/values/dimens.xml status_bar_height
