布局说明
锁屏通知流程 9.0可以参考
Notification 流程
根布局,整个SystemUI视图是由super_status_bar.xml创建的。这个布局include了一个status_bar_expanded.xml布局,这是整个下拉通知面版,包括滑动锁屏的各种控件
<com.android.systemui.statusbar.phone.StatusBarWindowView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:sysui="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true">
<com.android.systemui.statusbar.BackDropView
android:id="@+id/backdrop">
<ImageView android:id="@+id/backdrop_back" />
<ImageView android:id="@+id/backdrop_front"/>
</com.android.systemui.statusbar.BackDropView>
<com.android.systemui.statusbar.ScrimView
android:id="@+id/scrim_behind"
/>
<!--状态栏容器-->
<FrameLayout
android:id="@+id/status_bar_container" />
<!--整个下拉通知面版,包括滑动锁屏界面-->
<include layout="@layout/status_bar_expanded" />
<!--这里亮度调节bar-->
<include layout="@layout/brightness_mirror" />
<com.android.systemui.statusbar.ScrimView
android:id="@+id/scrim_in_front"/>
<!--在锁屏界面,显示在状态栏之下,显示在时间之上-->
<LinearLayout
android:id="@+id/lock_icon_container">
<com.android.systemui.statusbar.phone.LockIcon
android:id="@+id/lock_icon" />
<com.android.keyguard.KeyguardMessageArea
android:id="@+id/keyguard_message_area" />
</LinearLayout>
</com.android.systemui.statusbar.phone.StatusBarWindowView>
status_bar_expanded.xml
android:id="@+id/notification_panel" >
<FrameLayout
android:id="@+id/big_clock_container" />
<!--滑动锁屏界面状态视图: 时间,日期-->
<include
layout="@layout/keyguard_status_view"
android:visibility="gone" />
<com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer
android:id="@+id/notification_container_parent">
<include layout="@layout/dock_info_overlay" />
<!--QS界面-->
<FrameLayout
android:id="@+id/qs_frame"
android:layout="@layout/qs_panel" />
<!--显示通知的容器-->
<com.android.systemui.statusbar.notification.stack.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" />
<!--滑动锁屏状态栏-->
<include
layout="@layout/keyguard_status_bar"
android:visibility="invisible" />
<Button
android:id="@+id/report_rejected_touch" />
</com.android.systemui.statusbar.phone.NotificationsQuickSettingsContainer>
<!--这里锁屏底部图标, 填充整个父布局,例如左下角的图标,右下角的图标Camera-->
<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>
Android 9.0 SystemUI Notification