Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 39784a14 authored by Lucas Dupin's avatar Lucas Dupin
Browse files

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
parent 845a4035
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -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();
    }

+4 −3
Original line number Diff line number Diff line
@@ -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);
+7 −5
Original line number Diff line number Diff line
@@ -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() {