OSDN Git Service

Conserve expansion after re-inflation
authorLucas Dupin <dupin@google.com>
Thu, 21 Jun 2018 18:41:34 +0000 (11:41 -0700)
committerLucas Dupin <dupin@google.com>
Fri, 22 Jun 2018 19:35:45 +0000 (12:35 -0700)
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
Fixes: 110530608
Fixes: 110147405
Fixes: 79122419

packages/SystemUI/src/com/android/systemui/statusbar/phone/PanelBar.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java

index 18bc4e5..5d23494 100644 (file)
@@ -33,6 +33,7 @@ public abstract class PanelBar extends FrameLayout {
     private static final String STATE = "state";
     private boolean mBouncerShowing;
     private boolean mExpanded;
+    protected float mPanelFraction;
 
     public static final void LOG(String fmt, Object... args) {
         if (!DEBUG) return;
@@ -99,6 +100,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);
     }
@@ -153,6 +162,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) {
index 075883a..59863ec 100644 (file)
@@ -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);
index a9f1b4b..d8e3dd8 100644 (file)
@@ -833,6 +833,7 @@ 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);
@@ -849,6 +850,11 @@ public class StatusBar extends SystemUI implements DemoMode,
                         mNotificationPanel.notifyBarPanelExpansionChanged();
                     }
                     mStatusBarView.setBouncerShowing(mBouncerShowing);
+                    if (oldStatusBarView != null) {
+                        float fraction = oldStatusBarView.getExpansionFraction();
+                        boolean expanded = oldStatusBarView.isExpanded();
+                        mStatusBarView.panelExpansionChanged(fraction, expanded);
+                    }
 
                     HeadsUpAppearanceController oldController = mHeadsUpAppearanceController;
                     if (mHeadsUpAppearanceController != null) {