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