Android6.0狀態欄(系統下拉狀態欄的定制)


■目標

不允許用戶從上到下下拉狀態欄

■案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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM