android9 SystemUI定制1-基本布局关系

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完全展开图:
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面板折叠图:
qs面板折叠图
QuickStatusBarHeader的显示区域如图中粗线框所示,注意3处与完全展开图中的3处,这两处都有快捷设置按钮,但是对应的时不同布局,展开后的3处对应的是QSPanel,而此处的3对应QuickQSPanel,是QSPanel的子类。QuickQSPanel默认显示一行,QSPanel可以控制列数和每行显示的个数,两者不影响。

下一篇初步修改

猜你喜欢

转载自blog.csdn.net/weixin_40652755/article/details/122835655
今日推荐