From 39784a14f38c64e6151be45caaf62dd28106bf1a Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Fri, 7 Jul 2017 17:40:54 -0700 Subject: [PATCH] Fix scrim opacity in the brightness mirror ScrimController should be the only owner of scrim views. This enables up to have better control over their opacities and when they should fade in and out. Test: visual Change-Id: Ie3a1e1b4cc32e7998abe221a5c08eda2a8a2e6c0 Fixes: 38430977 --- .../systemui/statusbar/phone/ScrimController.java | 4 ++-- .../android/systemui/statusbar/phone/StatusBar.java | 7 ++++--- .../statusbar/policy/BrightnessMirrorController.java | 12 +++++++----- 3 files changed, 13 insertions(+), 10 deletions(-) diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java index 0bd58df130028..950aca326d977 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java @@ -617,9 +617,9 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, return alpha * expandFactor; } - public void forceHideScrims(boolean hide) { + public void forceHideScrims(boolean hide, boolean animated) { mForceHideScrims = hide; - mAnimateChange = false; + mAnimateChange = animated; scheduleUpdate(); } 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 4e428e82d3e3c..a8ae7e03218a2 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java @@ -1156,7 +1156,8 @@ public class StatusBar extends SystemUI implements DemoMode, .build()); final QSTileHost qsh = SystemUIFactory.getInstance().createQSTileHost(mContext, this, mIconController); - mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow); + mBrightnessMirrorController = new BrightnessMirrorController(mStatusBarWindow, + mScrimController); fragmentHostManager.addTagListener(QS.TAG, (tag, f) -> { QS qs = (QS) f; if (qs instanceof QSFragment) { @@ -4272,7 +4273,7 @@ public class StatusBar extends SystemUI implements DemoMode, releaseGestureWakeLock(); runLaunchTransitionEndRunnable(); mLaunchTransitionFadingAway = false; - mScrimController.forceHideScrims(false /* hide */); + mScrimController.forceHideScrims(false /* hide */, false /* animated */); updateMediaMetaData(true /* metaDataChanged */, true); } @@ -4307,7 +4308,7 @@ public class StatusBar extends SystemUI implements DemoMode, if (beforeFading != null) { beforeFading.run(); } - mScrimController.forceHideScrims(true /* hide */); + mScrimController.forceHideScrims(true /* hide */, false /* animated */); updateMediaMetaData(false, true); mNotificationPanel.setAlpha(1); mStackScroller.setParentNotFullyVisible(true); diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java index ab55b23c91ecb..718c34859afa4 100644 --- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java +++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/BrightnessMirrorController.java @@ -24,6 +24,7 @@ import android.widget.FrameLayout; import com.android.systemui.Interpolators; import com.android.systemui.R; import com.android.systemui.statusbar.ScrimView; +import com.android.systemui.statusbar.phone.ScrimController; import com.android.systemui.statusbar.phone.StatusBarWindowView; import com.android.systemui.statusbar.stack.NotificationStackScrollLayout; @@ -37,30 +38,31 @@ public class BrightnessMirrorController { public long TRANSITION_DURATION_IN = 200; private final StatusBarWindowView mStatusBarWindow; - private final ScrimView mScrimBehind; + private final ScrimController mScrimController; private final View mNotificationPanel; private final int[] mInt2Cache = new int[2]; private View mBrightnessMirror; - public BrightnessMirrorController(StatusBarWindowView statusBarWindow) { + public BrightnessMirrorController(StatusBarWindowView statusBarWindow, + ScrimController scrimController) { mStatusBarWindow = statusBarWindow; - mScrimBehind = (ScrimView) statusBarWindow.findViewById(R.id.scrim_behind); mBrightnessMirror = statusBarWindow.findViewById(R.id.brightness_mirror); mNotificationPanel = statusBarWindow.findViewById(R.id.notification_panel); mStackScroller = (NotificationStackScrollLayout) statusBarWindow.findViewById( R.id.notification_stack_scroller); + mScrimController = scrimController; } public void showMirror() { mBrightnessMirror.setVisibility(View.VISIBLE); mStackScroller.setFadingOut(true); - mScrimBehind.animateViewAlpha(0.0f, TRANSITION_DURATION_OUT, Interpolators.ALPHA_OUT); + mScrimController.forceHideScrims(true /* hide */, true /* animated */); outAnimation(mNotificationPanel.animate()) .withLayer(); } public void hideMirror() { - mScrimBehind.animateViewAlpha(1.0f, TRANSITION_DURATION_IN, Interpolators.ALPHA_IN); + mScrimController.forceHideScrims(false /* hide */, true /* animated */); inAnimation(mNotificationPanel.animate()) .withLayer() .withEndAction(new Runnable() {