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:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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() {
|
||||
|
||||
Reference in New Issue
Block a user