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

 

posted @ 2017-03-13 18:00  mlrs  阅读(7666)  评论(1编辑  收藏  举报