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

Commit 14fdb4b9 authored by Christian Göllner's avatar Christian Göllner Committed by Android (Google) Code Review
Browse files

Merge "Large screens: fully fade in behind scrim before anything else on shade" into tm-qpr-dev

parents 5c0efdcd 6a7110ec
Loading
Loading
Loading
Loading
+17 −9
Original line number Diff line number Diff line
@@ -791,20 +791,28 @@ public class ScrimController implements ViewTreeObserver.OnPreDrawListener, Dump
            if (!mScreenOffAnimationController.shouldExpandNotifications()
                    && !mAnimatingPanelExpansionOnUnlock
                    && !occluding) {
                if (mClipsQsScrim) {
                    float behindFraction = getInterpolatedFraction();
                    behindFraction = (float) Math.pow(behindFraction, 0.8f);
                if (mClipsQsScrim) {
                    mBehindAlpha = mTransparentScrimBackground ? 0 : 1;
                    mNotificationsAlpha =
                            mTransparentScrimBackground ? 0 : behindFraction * mDefaultScrimAlpha;
                } else {
                    mBehindAlpha =
                            mTransparentScrimBackground ? 0 : behindFraction * mDefaultScrimAlpha;
                    if (mTransparentScrimBackground) {
                        mBehindAlpha = 0;
                        mNotificationsAlpha = 0;
                    } else {
                        // Behind scrim will finish fading in at 30% expansion.
                        float behindFraction = MathUtils
                                .constrainedMap(0f, 1f, 0f, 0.3f, mPanelExpansionFraction);
                        mBehindAlpha = behindFraction * mDefaultScrimAlpha;
                        // Delay fade-in of notification scrim a bit further, to coincide with the
                    // view fade in. Otherwise the empty panel can be quite jarring.
                    mNotificationsAlpha = mTransparentScrimBackground
                            ? 0 : MathUtils.constrainedMap(0f, 1f, 0.3f, 0.75f,
                            mPanelExpansionFraction);
                        // behind scrim finishing fading in.
                        // Also to coincide with the view starting to fade in, otherwise the empty
                        // panel can be quite jarring.
                        mNotificationsAlpha = MathUtils
                                .constrainedMap(0f, 1f, 0.3f, 0.75f, mPanelExpansionFraction);
                    }
                }
                mBehindTint = mState.getBehindTint();
                mInFrontAlpha = 0;
+10 −2
Original line number Diff line number Diff line
@@ -630,6 +630,7 @@ public class ScrimControllerTest extends SysuiTestCase {

    @Test
    public void transitionToUnlocked() {
        mScrimController.setClipsQsScrim(false);
        mScrimController.setRawPanelExpansionFraction(0f);
        mScrimController.transitionTo(ScrimState.UNLOCKED);
        finishAnimationsImmediately();
@@ -645,14 +646,21 @@ public class ScrimControllerTest extends SysuiTestCase {
        ));

        // Back scrim should be visible after start dragging
        mScrimController.setRawPanelExpansionFraction(0.3f);
        mScrimController.setRawPanelExpansionFraction(0.29f);
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT,
                mScrimBehind, SEMI_TRANSPARENT));

        // Back scrim should be opaque at 30%
        mScrimController.setRawPanelExpansionFraction(0.3f);
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mNotificationsScrim, TRANSPARENT,
                mScrimBehind, OPAQUE));

        // Then, notification scrim should fade in
        mScrimController.setRawPanelExpansionFraction(0.7f);
        mScrimController.setRawPanelExpansionFraction(0.31f);
        assertScrimAlpha(Map.of(
                mScrimInFront, TRANSPARENT,
                mNotificationsScrim, SEMI_TRANSPARENT,