1.super_status_bar.xml
<com.android.systemui.statusbar.phone.StatusBarWindowView>
<com.android.systemui.statusbar.BackDropView>
<ImageView android:id="@+id/backdrop_back"/>
<ImageView android:id="@+id/backdrop_front"/>
</com.android.systemui.statusbar.BackDropView>
//statusBar下拉时显示的背景蒙板(灰色透明)
<com.android.systemui.statusbar.ScrimView
android:id="@+id/scrim_behind"/>
//状态栏布局(statusBar未下拉的状态栏)
<FrameLayout
android:id="@+id/status_bar_container"/>
<ViewStub android:id="@+id/fullscreen_user_switcher_stub"/>
//statusBar下拉菜单对应的总布局
<include layout="@layout/status_bar_expanded"/>
//亮度控制条
<include layout="@layout/brightness_mirror" />
//statusBar下拉时显示的前景蒙板<com.android.systemui.statusbar.ScrimView
android:id="@+id/scrim_in_front"/>
</com.android.systemui.statusbar.phone.StatusBarWindowView>
status_bar_container:未展开状态栏时的布局,对应下图线框:
ScrimView 背景蒙版,展开状态栏时显示:
@layout/brightness_mirror 亮度控制条:
2.status_bar_expanded.xml:
包含快捷设置面板容器布局,通知栏容器布局和锁屏相关容器布局。
<com.android.systemui.statusbar.phone.NotificationPanelView
//锁屏时的状态栏
<include
layout="@layout/keyguard_status_view"
android:visibility="gone" />
//快捷设置面板及通知栏的包裹容器
<com.xxx.NotificationsQuickSettingsContainer>
//快捷设置面板布局
<FrameLayout
android:id="@+id/qs_frame"
android:layout="@layout/qs_panel"/>
//通知栏布局
<NotificationStackScrollLayout
android:id="@+id/notification_stack_scroller"/>
//?
<include layout="@layout/ambient_indication"
android:id="@+id/ambient_indication_container" />
//?
<ViewStub
android:id="@+id/keyguard_user_switcher"
android:layout="@layout/keyguard_user_switcher"/>
//
<include
layout="@layout/keyguard_status_bar"
android:visibility="invisible" />
<Button
android:id="@+id/report_rejected_touch"
android:visibility="gone" />
</com.xxx.NotificationsQuickSettingsContainer>
<include
layout="@layout/keyguard_bottom_area"
android:visibility="gone" />
<com.android.systemui.statusbar.AlphaOptimizedView
android:id="@+id/qs_navbar_scrim" />
</com.android.systemui.statusbar.phone.NotificationPanelView>
3.qs_panel.xml :快捷面板
<com.android.systemui.qs.QSContainerImpl
//qs面板主要部分背景,控制图中2处的背景
<View android:id="@+id/quick_settings_background"/>
//qs面板底部,对应图中4
<include layout="@layout/qs_footer_impl" />
//qs面板展开时的statusBar背景 ,控制图中1处的背景
<View android:id="@+id/quick_settings_status_bar_background"/>
//
<View android:id="@+id/quick_settings_gradient_view"/>
//qs快捷设置,继承线性布局,二级展开部分,对应图中3
<com.android.systemui.qs.QSPanel/>
//header,快捷面板一展开首先显示的主要部分
<include layout="@layout/quick_status_bar_expanded_header" />
//长按设置按钮(每个单一item)显示的页面:快捷设置详情
<include android:id="@+id/qs_detail"
layout="@layout/qs_detail" />
//
<include
android:id="@+id/qs_customize"
layout="@layout/qs_customize_panel"
android:visibility="gone" />
</com.android.systemui.qs.QSContainerImpl>
布局对应关系如qs完全展开图:
4.quick_status_bar_expanded_header.xml:
qs面板未完全展开时显示的header
<com.android.systemui.qs.QuickStatusBarHeader
//面板展开时的statusBar(完全、未完全展开都是这个),
//包含了时间文字和电量的显示,对应下图1
<include layout="@layout/quick_status_bar_header_system_icons"/>
//包含日期、手机状态icon(如wifi、信号图标),对应下图2
<include layout="@layout/quick_qs_status_icons"/>
//包含工具提示、报警文本等的布局,图中未显示
<include layout="@layout/quick_settings_header_info" />
//快捷设置的缩略部分,对应图中3
<com.android.systemui.qs.QuickQSPanel/>
//
<com.android.systemui.statusbar.AlphaOptimizedImageView/>
//
<TextView android:id="@+id/header_debug_info"/>
</com.android.systemui.qs.QuickStatusBarHeader>
对应区域如qs面板折叠图:
QuickStatusBarHeader的显示区域如图中粗线框所示,注意3处与完全展开图中的3处,这两处都有快捷设置按钮,但是对应的时不同布局,展开后的3处对应的是QSPanel,而此处的3对应QuickQSPanel,是QSPanel的子类。QuickQSPanel默认显示一行,QSPanel可以控制列数和每行显示的个数,两者不影响。
下一篇初步修改