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
This commit is contained in:
Lucas Dupin
2017-07-07 17:40:54 -07:00
parent 845a4035ae
commit 39784a14f3
3 changed files with 13 additions and 10 deletions

View File

@@ -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();
}

View File

@@ -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);

View File

@@ -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() {