From 95951a341ed0208a455f8e32ba54734e70c36dcd Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Thu, 21 Jun 2018 11:41:34 -0700 Subject: Conserve expansion after re-inflation We were updating most of the PhoneStatusBarView state during re-inflation but not the expansion and its fraction. Test: Pull down shade, run: adb shell service call overlay 4 s16 "com.android.systemui.theme.dark" i32 1 i32 0 Test: Switch to guest user, switch back Test: Reboot, look at status bar Change-Id: I41669fb32419ad02a11586ba248a68b47d450413 Merged-In: I41669fb32419ad02a11586ba248a68b47d450413 Fixes: 110530608 Fixes: 110147405 Fixes: 79122419 --- .../src/com/android/systemui/statusbar/phone/PanelBar.java | 10 ++++++++++ .../android/systemui/statusbar/phone/PhoneStatusBarView.java | 2 -- .../src/com/android/systemui/statusbar/phone/StatusBar.java | 6 ++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java index c4d7e72c0d82..6f4a3cd82140 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java @@ -29,6 +29,7 @@ public abstract class PanelBar extends FrameLayout { private static final boolean SPEW = false; private boolean mBouncerShowing; private boolean mExpanded; + protected float mPanelFraction; public static final void LOG(String fmt, Object... args) { if (!DEBUG) return; @@ -77,6 +78,14 @@ public abstract class PanelBar extends FrameLayout { if (mPanel != null) mPanel.setImportantForAccessibility(important); } + public float getExpansionFraction() { + return mPanelFraction; + } + + public boolean isExpanded() { + return mExpanded; + } + private void updateVisibility() { mPanel.setVisibility(mExpanded || mBouncerShowing ? VISIBLE : INVISIBLE); } @@ -131,6 +140,7 @@ public abstract class PanelBar extends FrameLayout { if (SPEW) LOG("panelExpansionChanged: start state=%d", mState); PanelView pv = mPanel; mExpanded = expanded; + mPanelFraction = frac; updateVisibility(); // adjust any other panels that may be partially visible if (expanded) { diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java index 075883a8ac52..59863ecb1191 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java @@ -59,7 +59,6 @@ public class PhoneStatusBarView extends PanelBar { private final PhoneStatusBarTransitions mBarTransitions; private ScrimController mScrimController; private float mMinFraction; - private float mPanelFraction; private Runnable mHideExpandedRunnable = new Runnable() { @Override public void run() { @@ -269,7 +268,6 @@ public class PhoneStatusBarView extends PanelBar { @Override public void panelExpansionChanged(float frac, boolean expanded) { super.panelExpansionChanged(frac, expanded); - mPanelFraction = frac; updateScrimFraction(); if ((frac == 0 || frac == 1) && mBar.getNavigationBarView() != null) { mBar.getNavigationBarView().onPanelExpandedChange(expanded); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java index 07b0e1d242d5..182f9f758fb0 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -836,11 +836,17 @@ public class StatusBar extends SystemUI implements DemoMode, CollapsedStatusBarFragment statusBarFragment = (CollapsedStatusBarFragment) fragment; statusBarFragment.initNotificationIconArea(mNotificationIconAreaController); + PhoneStatusBarView oldStatusBarView = mStatusBarView; mStatusBarView = (PhoneStatusBarView) fragment.getView(); mStatusBarView.setBar(this); mStatusBarView.setPanel(mNotificationPanel); mStatusBarView.setScrimController(mScrimController); mStatusBarView.setBouncerShowing(mBouncerShowing); + if (oldStatusBarView != null) { + float fraction = oldStatusBarView.getExpansionFraction(); + boolean expanded = oldStatusBarView.isExpanded(); + mStatusBarView.panelExpansionChanged(fraction, expanded); + } if (mHeadsUpAppearanceController != null) { // This view is being recreated, let's destroy the old one mHeadsUpAppearanceController.destroy(); -- cgit v1.2.3-59-g8ed1b