SystemUI状态条下拉视图显示过程
2017-01-05 08:45
369 查看
super_status_bar.xml中的brightness_mirror是状态条上面亮度调节的控件。panel_holder是下面包括所有控件的一个容器。在status_bar_expanded_header.xml中system_icons_super_container为状态条下拉时候显示的顶层布局。split_clock_view.xml用来绘制下拉菜单左边的时间日期。状态条控件的显示是用的PanelBar.java。
顶上的状态条被下拉首先被处理的是触摸事件,也就是PhoneStatusBar里面的interceptTouchEvent函数,当状态条被下拉出来之后就会执行PanelBar里面的onTouchEvent函数,它会根据触摸的位置选择被触摸的panel,然后执行startOpeningPanel()就是用来初始化panel的状态,调用除NotificationPanelView以外其他视图的collapse函数,然后调用被触摸panel的onTouchEvent函数里面的ACTION_MOVE分支,执行setExpandedHeightInternal根据手指移动的距离刷新panel的高度并更新状态条的状态指示当前被扩展的状态,如果被完全下拉下来,则不会在更新状态条视图,否则不断调用NotificationPanelView里面的onHeightUpdated函数来更新该状态条的里面的内容。因此在PhoneStatusBar里面的onInterceptKeyEvent中的最后加入if(SystemProperties.get(“persist.sys.sysui.config”)){return true;}使得状态条不能被下拉下来。setprop persist.sys.sysui.config命令需要被写入init.rc文件里面,该文件会被编译成boot.img,所以要替换掉boot.img,之后在使用setprop命令就会在data/local目录下生成该 persist.sys.sysui.config目录,所以重启之后该属性值还生效。//1612001724 yah1826
顶上的状态条被下拉首先被处理的是触摸事件,也就是PhoneStatusBar里面的interceptTouchEvent函数,当状态条被下拉出来之后就会执行PanelBar里面的onTouchEvent函数,它会根据触摸的位置选择被触摸的panel,然后执行startOpeningPanel()就是用来初始化panel的状态,调用除NotificationPanelView以外其他视图的collapse函数,然后调用被触摸panel的onTouchEvent函数里面的ACTION_MOVE分支,执行setExpandedHeightInternal根据手指移动的距离刷新panel的高度并更新状态条的状态指示当前被扩展的状态,如果被完全下拉下来,则不会在更新状态条视图,否则不断调用NotificationPanelView里面的onHeightUpdated函数来更新该状态条的里面的内容。因此在PhoneStatusBar里面的onInterceptKeyEvent中的最后加入if(SystemProperties.get(“persist.sys.sysui.config”)){return true;}使得状态条不能被下拉下来。setprop persist.sys.sysui.config命令需要被写入init.rc文件里面,该文件会被编译成boot.img,所以要替换掉boot.img,之后在使用setprop命令就会在data/local目录下生成该 persist.sys.sysui.config目录,所以重启之后该属性值还生效。//1612001724 yah1826
相关文章推荐
- flex 控件的重要属性
- 学习Winform文本类控件(Label、Button、TextBox)
- Delphi控件ListView的属性及使用方法详解
- web下载的ActiveX控件自动更新
- WinForm实现按名称递归查找控件的方法
- C#中父窗口和子窗口之间控件互操作实例
- C#编写ActiveX网页截图控件
- Android编程之Button控件用法实例分析
- Android控件之CheckBox、RadioButton用法实例分析
- 在Android开发中使用自定义组合控件的例子
- 一款超酷的Android自定义加载控件
- 直接拿来用的Android刮奖控件
- Android重写View实现全新的控件
- MFC中动态创建控件以及事件响应实现方法
- WinForm自定义函数FindControl实现按名称查找控件
- Android控件之ProgressBar用法实例分析
- WinForm拖拽控件生成副本的解决方法
- ASP.NET动态添加用户控件的方法
- WinForm遍历窗体所有子控件的方法
- ASP.NET的HtmlForm控件学习及Post与Get的区别概述