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

Commit df1ae224 authored by Kevin Chyn's avatar Kevin Chyn Committed by Android (Google) Code Review
Browse files

Merge "Use StatusBar expansion instead of alpha to sync UDFPS animations" into sc-dev

parents 1cf1bbe0 fbfd4c2a
Loading
Loading
Loading
Loading
+1 −8
Original line number Diff line number Diff line
@@ -28,7 +28,6 @@ import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.internal.graphics.ColorUtils;
import com.android.settingslib.Utils;
import com.android.systemui.R;

@@ -98,13 +97,7 @@ public class UdfpsAnimationEnroll extends UdfpsAnimation {
    @Override
    public void setAlpha(int alpha) {
        super.setAlpha(alpha);

        // Gradually fade into the notification shade color. This needs to be done because the
        // UDFPS view is drawn on a layer on top of the notification shade
        final float percent = alpha / 255.f;
        mSensorPaint.setColor(ColorUtils.blendARGB(mNotificationShadeColor, Color.WHITE, percent));
        mSensorPaint.setShadowLayer(SHADOW_RADIUS, 0, 0,
                ColorUtils.blendARGB(mNotificationShadeColor, Color.BLACK, percent));
        mSensorPaint.setAlpha(alpha);
    }

    @Override
+18 −7
Original line number Diff line number Diff line
@@ -25,22 +25,21 @@ import android.util.AttributeSet;
import android.view.View;

import com.android.systemui.doze.DozeReceiver;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBar;

/**
 * Class that coordinates non-HBM animations (such as enroll, keyguard, BiometricPrompt,
 * FingerprintManager).
 */
public class UdfpsAnimationView extends View implements DozeReceiver,
        ScrimController.ScrimChangedListener {
        StatusBar.ExpansionChangedListener {

    private static final String TAG = "UdfpsAnimationView";

    @NonNull private UdfpsView mParent;
    @Nullable private UdfpsAnimation mUdfpsAnimation;
    @NonNull private RectF mSensorRect;
    private int mNotificationPanelAlpha;

    private int mAlpha;

    public UdfpsAnimationView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
@@ -52,12 +51,24 @@ public class UdfpsAnimationView extends View implements DozeReceiver,
        super.onDraw(canvas);

        if (mUdfpsAnimation != null) {
            final int alpha = mParent.shouldPauseAuth() ? 255 - mNotificationPanelAlpha : 255;
            final int alpha = mParent.shouldPauseAuth() ? mAlpha : 255;
            mUdfpsAnimation.setAlpha(alpha);
            mUdfpsAnimation.draw(canvas);
        }
    }

    private int expansionToAlpha(float expansion) {
        // Fade to 0 opacity when reaching this expansion amount
        final float maxExpansion = 0.4f;

        if (expansion >= maxExpansion) {
            return 0; // transparent
        }

        final float percent = expansion / maxExpansion;
        return (int) ((1 - percent) * 255);
    }

    void setParent(@NonNull UdfpsView parent) {
        mParent = parent;
    }
@@ -87,8 +98,8 @@ public class UdfpsAnimationView extends View implements DozeReceiver,
    }

    @Override
    public void onAlphaChanged(float alpha) {
        mNotificationPanelAlpha = (int) (alpha * 255);
    public void onExpansionChanged(float expansion, boolean expanded) {
        mAlpha = expansionToAlpha(expansion);
        postInvalidate();
    }

+3 −2
Original line number Diff line number Diff line
@@ -45,6 +45,7 @@ import com.android.systemui.dagger.qualifiers.Main;
import com.android.systemui.doze.DozeReceiver;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBar;
import com.android.systemui.util.concurrency.DelayableExecutor;

import javax.inject.Inject;
@@ -155,7 +156,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback {
            WindowManager windowManager,
            @NonNull StatusBarStateController statusBarStateController,
            @Main DelayableExecutor fgExecutor,
            @NonNull ScrimController scrimController) {
            @Nullable StatusBar statusBar) {
        mContext = context;
        // The fingerprint manager is queried for UDFPS before this class is constructed, so the
        // fingerprint manager should never be null.
@@ -186,7 +187,7 @@ public class UdfpsController implements DozeReceiver, HbmCallback {
        mView.setSensorProperties(mSensorProps);
        mView.setHbmCallback(this);

        scrimController.addScrimChangedListener(mView);
        statusBar.addExpansionChangedListener(mView);
        statusBarStateController.addCallback(mView);

        mFingerprintManager.setUdfpsOverlayController(new UdfpsOverlayController());
+4 −4
Original line number Diff line number Diff line
@@ -39,14 +39,14 @@ import android.widget.FrameLayout;
import com.android.systemui.R;
import com.android.systemui.doze.DozeReceiver;
import com.android.systemui.plugins.statusbar.StatusBarStateController;
import com.android.systemui.statusbar.phone.ScrimController;
import com.android.systemui.statusbar.phone.StatusBar;

/**
 * A view containing 1) A SurfaceView for HBM, and 2) A normal drawable view for all other
 * animations.
 */
public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIlluminator,
        StatusBarStateController.StateListener, ScrimController.ScrimChangedListener {
        StatusBarStateController.StateListener, StatusBar.ExpansionChangedListener {
    private static final String TAG = "UdfpsView";

    private static final int DEBUG_TEXT_SIZE_PX = 32;
@@ -133,8 +133,8 @@ public class UdfpsView extends FrameLayout implements DozeReceiver, UdfpsIllumin
    }

    @Override
    public void onAlphaChanged(float alpha) {
        mAnimationView.onAlphaChanged(alpha);
    public void onExpansionChanged(float expansion, boolean expanded) {
        mAnimationView.onExpansionChanged(expansion, expanded);
    }

    @Override
+14 −0
Original line number Diff line number Diff line
@@ -44,6 +44,7 @@ import com.android.systemui.plugins.DarkIconDispatcher.DarkReceiver;
import com.android.systemui.statusbar.CommandQueue;
import com.android.systemui.util.leak.RotationUtils;

import java.util.List;
import java.util.Objects;

public class PhoneStatusBarView extends PanelBar {
@@ -75,6 +76,8 @@ public class PhoneStatusBarView extends PanelBar {
    @Nullable
    private DisplayCutout mDisplayCutout;
    private int mStatusBarHeight;
    @Nullable
    private List<StatusBar.ExpansionChangedListener> mExpansionChangedListeners;

    /**
     * Draw this many pixels into the left/right side of the cutout to optimally use the space
@@ -93,6 +96,11 @@ public class PhoneStatusBarView extends PanelBar {
        mBar = bar;
    }

    public void setExpansionChangedListeners(
            @Nullable List<StatusBar.ExpansionChangedListener> listeners) {
        mExpansionChangedListeners = listeners;
    }

    public void setScrimController(ScrimController scrimController) {
        mScrimController = scrimController;
    }
@@ -277,6 +285,12 @@ public class PhoneStatusBarView extends PanelBar {
        if ((frac == 0 || frac == 1) && mBar.getNavigationBarView() != null) {
            mBar.getNavigationBarView().onStatusBarPanelStateChanged();
        }

        if (mExpansionChangedListeners != null) {
            for (StatusBar.ExpansionChangedListener listener : mExpansionChangedListeners) {
                listener.onExpansionChanged(frac, expanded);
            }
        }
    }

    private void updateScrimFraction() {
Loading