Loading packages/SystemUI/res/layout/super_status_bar.xml +8 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ <!-- This is the combined status bar / notification panel window. --> <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"> Loading @@ -29,6 +30,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" sysui:ignoreRightInset="true" > <ImageView android:id="@+id/backdrop_back" android:layout_width="match_parent" Loading @@ -44,7 +46,9 @@ <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_behind" android:layout_width="match_parent" android:layout_height="match_parent" android:importantForAccessibility="no" /> android:importantForAccessibility="no" sysui:ignoreRightInset="true" /> <com.android.systemui.statusbar.AlphaOptimizedView android:id="@+id/heads_up_scrim" Loading Loading @@ -89,6 +93,8 @@ <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_in_front" android:layout_width="match_parent" android:layout_height="match_parent" android:importantForAccessibility="no" /> android:importantForAccessibility="no" sysui:ignoreRightInset="true" /> </com.android.systemui.statusbar.phone.StatusBarWindowView> packages/SystemUI/res/values/attrs.xml +4 −0 Original line number Diff line number Diff line Loading @@ -82,5 +82,9 @@ <attr name="fillColor" format="integer" /> <attr name="singleToneColor" format="integer" /> </declare-styleable> <declare-styleable name="StatusBarWindowView_Layout"> <attr name="ignoreRightInset" format="boolean" /> </declare-styleable> </resources> packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, /** Allow some time inbetween the long press for back and recents. */ private static final int LOCK_TO_APP_GESTURE_TOLERENCE = 200; /** If true, the system is in the half-boot-to-decryption-screen state. * Prudently disable QS and notifications. */ private static final boolean ONLY_CORE_APPS; static { Loading packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +54 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone; import android.app.StatusBarManager; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; Loading Loading @@ -50,6 +51,8 @@ public class StatusBarWindowView extends FrameLayout { private NotificationPanelView mNotificationPanel; private View mBrightnessMirror; private int mRightInset = 0; PhoneStatusBar mService; private final Paint mTransparentSrcPaint = new Paint(); Loading @@ -63,14 +66,18 @@ public class StatusBarWindowView extends FrameLayout { @Override protected boolean fitSystemWindows(Rect insets) { if (getFitsSystemWindows()) { boolean changed = insets.left != getPaddingLeft() boolean paddingChanged = insets.left != getPaddingLeft() || insets.top != getPaddingTop() || insets.right != getPaddingRight() || insets.bottom != getPaddingBottom(); // Drop top inset, apply right and left inset and pass through bottom inset. if (changed) { setPadding(insets.left, 0, insets.right, 0); // Super-special right inset handling, because scrims and backdrop need to ignore it. if (insets.right != mRightInset) { mRightInset = insets.right; applyMargins(); } // Drop top inset, apply left inset and pass through bottom inset. if (paddingChanged) { setPadding(insets.left, 0, 0, 0); } insets.left = 0; insets.top = 0; Loading @@ -88,6 +95,30 @@ public class StatusBarWindowView extends FrameLayout { return false; } private void applyMargins() { final int N = getChildCount(); for (int i = 0; i < N; i++) { View child = getChildAt(i); if (child.getLayoutParams() instanceof LayoutParams) { LayoutParams lp = (LayoutParams) child.getLayoutParams(); if (!lp.ignoreRightInset && lp.rightMargin != mRightInset) { lp.rightMargin = mRightInset; child.requestLayout(); } } } } @Override public FrameLayout.LayoutParams generateLayoutParams(AttributeSet attrs) { return new LayoutParams(getContext(), attrs); } @Override protected FrameLayout.LayoutParams generateDefaultLayoutParams() { return new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); } @Override protected void onAttachedToWindow () { super.onAttachedToWindow(); Loading Loading @@ -244,5 +275,23 @@ public class StatusBarWindowView extends FrameLayout { mStackScrollLayout.cancelExpandHelper(); } } public class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; public LayoutParams(int width, int height) { super(width, height); } public LayoutParams(Context c, AttributeSet attrs) { super(c, attrs); TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.StatusBarWindowView_Layout); ignoreRightInset = a.getBoolean( R.styleable.StatusBarWindowView_Layout_ignoreRightInset, false); a.recycle(); } } } Loading
packages/SystemUI/res/layout/super_status_bar.xml +8 −2 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ <!-- This is the combined status bar / notification panel window. --> <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"> Loading @@ -29,6 +30,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:visibility="gone" sysui:ignoreRightInset="true" > <ImageView android:id="@+id/backdrop_back" android:layout_width="match_parent" Loading @@ -44,7 +46,9 @@ <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_behind" android:layout_width="match_parent" android:layout_height="match_parent" android:importantForAccessibility="no" /> android:importantForAccessibility="no" sysui:ignoreRightInset="true" /> <com.android.systemui.statusbar.AlphaOptimizedView android:id="@+id/heads_up_scrim" Loading Loading @@ -89,6 +93,8 @@ <com.android.systemui.statusbar.ScrimView android:id="@+id/scrim_in_front" android:layout_width="match_parent" android:layout_height="match_parent" android:importantForAccessibility="no" /> android:importantForAccessibility="no" sysui:ignoreRightInset="true" /> </com.android.systemui.statusbar.phone.StatusBarWindowView>
packages/SystemUI/res/values/attrs.xml +4 −0 Original line number Diff line number Diff line Loading @@ -82,5 +82,9 @@ <attr name="fillColor" format="integer" /> <attr name="singleToneColor" format="integer" /> </declare-styleable> <declare-styleable name="StatusBarWindowView_Layout"> <attr name="ignoreRightInset" format="boolean" /> </declare-styleable> </resources>
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBar.java +2 −0 Original line number Diff line number Diff line Loading @@ -232,6 +232,8 @@ public class PhoneStatusBar extends BaseStatusBar implements DemoMode, /** Allow some time inbetween the long press for back and recents. */ private static final int LOCK_TO_APP_GESTURE_TOLERENCE = 200; /** If true, the system is in the half-boot-to-decryption-screen state. * Prudently disable QS and notifications. */ private static final boolean ONLY_CORE_APPS; static { Loading
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowView.java +54 −5 Original line number Diff line number Diff line Loading @@ -18,6 +18,7 @@ package com.android.systemui.statusbar.phone; import android.app.StatusBarManager; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Canvas; import android.graphics.Paint; import android.graphics.PorterDuff; Loading Loading @@ -50,6 +51,8 @@ public class StatusBarWindowView extends FrameLayout { private NotificationPanelView mNotificationPanel; private View mBrightnessMirror; private int mRightInset = 0; PhoneStatusBar mService; private final Paint mTransparentSrcPaint = new Paint(); Loading @@ -63,14 +66,18 @@ public class StatusBarWindowView extends FrameLayout { @Override protected boolean fitSystemWindows(Rect insets) { if (getFitsSystemWindows()) { boolean changed = insets.left != getPaddingLeft() boolean paddingChanged = insets.left != getPaddingLeft() || insets.top != getPaddingTop() || insets.right != getPaddingRight() || insets.bottom != getPaddingBottom(); // Drop top inset, apply right and left inset and pass through bottom inset. if (changed) { setPadding(insets.left, 0, insets.right, 0); // Super-special right inset handling, because scrims and backdrop need to ignore it. if (insets.right != mRightInset) { mRightInset = insets.right; applyMargins(); } // Drop top inset, apply left inset and pass through bottom inset. if (paddingChanged) { setPadding(insets.left, 0, 0, 0); } insets.left = 0; insets.top = 0; Loading @@ -88,6 +95,30 @@ public class StatusBarWindowView extends FrameLayout { return false; } private void applyMargins() { final int N = getChildCount(); for (int i = 0; i < N; i++) { View child = getChildAt(i); if (child.getLayoutParams() instanceof LayoutParams) { LayoutParams lp = (LayoutParams) child.getLayoutParams(); if (!lp.ignoreRightInset && lp.rightMargin != mRightInset) { lp.rightMargin = mRightInset; child.requestLayout(); } } } } @Override public FrameLayout.LayoutParams generateLayoutParams(AttributeSet attrs) { return new LayoutParams(getContext(), attrs); } @Override protected FrameLayout.LayoutParams generateDefaultLayoutParams() { return new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); } @Override protected void onAttachedToWindow () { super.onAttachedToWindow(); Loading Loading @@ -244,5 +275,23 @@ public class StatusBarWindowView extends FrameLayout { mStackScrollLayout.cancelExpandHelper(); } } public class LayoutParams extends FrameLayout.LayoutParams { public boolean ignoreRightInset; public LayoutParams(int width, int height) { super(width, height); } public LayoutParams(Context c, AttributeSet attrs) { super(c, attrs); TypedArray a = c.obtainStyledAttributes(attrs, R.styleable.StatusBarWindowView_Layout); ignoreRightInset = a.getBoolean( R.styleable.StatusBarWindowView_Layout_ignoreRightInset, false); a.recycle(); } } }