Merge "Hide UDFPS background on transition Home => AOD" into tm-dev

This commit is contained in:
Beverly Tai
2022-05-09 16:16:35 +00:00
committed by Android (Google) Code Review
3 changed files with 36 additions and 21 deletions

View File

@@ -32,6 +32,7 @@ import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.ImageView; import android.widget.ImageView;
import androidx.annotation.IntDef;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.asynclayoutinflater.view.AsyncLayoutInflater; import androidx.asynclayoutinflater.view.AsyncLayoutInflater;
@@ -44,6 +45,8 @@ import com.airbnb.lottie.LottieProperty;
import com.airbnb.lottie.model.KeyPath; import com.airbnb.lottie.model.KeyPath;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
/** /**
* View corresponding with udfps_keyguard_view.xml * View corresponding with udfps_keyguard_view.xml
@@ -52,7 +55,6 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
private UdfpsDrawable mFingerprintDrawable; // placeholder private UdfpsDrawable mFingerprintDrawable; // placeholder
private LottieAnimationView mAodFp; private LottieAnimationView mAodFp;
private LottieAnimationView mLockScreenFp; private LottieAnimationView mLockScreenFp;
private int mStatusBarState;
// used when highlighting fp icon: // used when highlighting fp icon:
private int mTextColorPrimary; private int mTextColorPrimary;
@@ -70,7 +72,7 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
private float mBurnInOffsetY; private float mBurnInOffsetY;
private float mBurnInProgress; private float mBurnInProgress;
private float mInterpolatedDarkAmount; private float mInterpolatedDarkAmount;
private boolean mAnimatingBetweenAodAndLockscreen; // As opposed to Unlocked => AOD private int mAnimationType = ANIMATION_NONE;
private boolean mFullyInflated; private boolean mFullyInflated;
public UdfpsKeyguardView(Context context, @Nullable AttributeSet attrs) { public UdfpsKeyguardView(Context context, @Nullable AttributeSet attrs) {
@@ -117,8 +119,10 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
return; return;
} }
final float darkAmountForAnimation = mAnimatingBetweenAodAndLockscreen // if we're animating from screen off, we can immediately place the icon in the
? mInterpolatedDarkAmount : 1f /* animating from unlocked to AOD */; // AoD-burn in location, else we need to translate the icon from LS => AoD.
final float darkAmountForAnimation = mAnimationType == ANIMATION_UNLOCKED_SCREEN_OFF
? 1f : mInterpolatedDarkAmount;
mBurnInOffsetX = MathUtils.lerp(0f, mBurnInOffsetX = MathUtils.lerp(0f,
getBurnInOffset(mMaxBurnInOffsetX * 2, true /* xAxis */) getBurnInOffset(mMaxBurnInOffsetX * 2, true /* xAxis */)
- mMaxBurnInOffsetX, darkAmountForAnimation); - mMaxBurnInOffsetX, darkAmountForAnimation);
@@ -127,12 +131,12 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
- mMaxBurnInOffsetY, darkAmountForAnimation); - mMaxBurnInOffsetY, darkAmountForAnimation);
mBurnInProgress = MathUtils.lerp(0f, getBurnInProgressOffset(), darkAmountForAnimation); mBurnInProgress = MathUtils.lerp(0f, getBurnInProgressOffset(), darkAmountForAnimation);
if (mAnimatingBetweenAodAndLockscreen && !mPauseAuth) { if (mAnimationType == ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN && !mPauseAuth) {
mLockScreenFp.setTranslationX(mBurnInOffsetX); mLockScreenFp.setTranslationX(mBurnInOffsetX);
mLockScreenFp.setTranslationY(mBurnInOffsetY); mLockScreenFp.setTranslationY(mBurnInOffsetY);
mBgProtection.setAlpha(1f - mInterpolatedDarkAmount); mBgProtection.setAlpha(1f - mInterpolatedDarkAmount);
mLockScreenFp.setAlpha(1f - mInterpolatedDarkAmount); mLockScreenFp.setAlpha(1f - mInterpolatedDarkAmount);
} else if (mInterpolatedDarkAmount == 0f) { } else if (darkAmountForAnimation == 0f) {
mLockScreenFp.setTranslationX(0); mLockScreenFp.setTranslationX(0);
mLockScreenFp.setTranslationY(0); mLockScreenFp.setTranslationY(0);
mBgProtection.setAlpha(mAlpha / 255f); mBgProtection.setAlpha(mAlpha / 255f);
@@ -148,9 +152,15 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
mAodFp.setProgress(mBurnInProgress); mAodFp.setProgress(mBurnInProgress);
mAodFp.setAlpha(mInterpolatedDarkAmount); mAodFp.setAlpha(mInterpolatedDarkAmount);
// done animating between AoD & LS // done animating
if (mInterpolatedDarkAmount == 1f || mInterpolatedDarkAmount == 0f) { final boolean doneAnimatingBetweenAodAndLS =
mAnimatingBetweenAodAndLockscreen = false; mAnimationType == ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN
&& (mInterpolatedDarkAmount == 0f || mInterpolatedDarkAmount == 1f);
final boolean doneAnimatingUnlockedScreenOff =
mAnimationType == ANIMATION_UNLOCKED_SCREEN_OFF
&& (mInterpolatedDarkAmount == 1f);
if (doneAnimatingBetweenAodAndLS || doneAnimatingUnlockedScreenOff) {
mAnimationType = ANIMATION_NONE;
} }
} }
@@ -158,10 +168,6 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
mUdfpsRequested = request; mUdfpsRequested = request;
} }
void setStatusBarState(int statusBarState) {
mStatusBarState = statusBarState;
}
void updateColor() { void updateColor() {
if (!mFullyInflated) { if (!mFullyInflated) {
return; return;
@@ -219,8 +225,16 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
return mAlpha; return mAlpha;
} }
void onDozeAmountChanged(float linear, float eased, boolean animatingBetweenAodAndLockscreen) { static final int ANIMATION_NONE = 0;
mAnimatingBetweenAodAndLockscreen = animatingBetweenAodAndLockscreen; static final int ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN = 1;
static final int ANIMATION_UNLOCKED_SCREEN_OFF = 2;
@Retention(RetentionPolicy.SOURCE)
@IntDef({ANIMATION_NONE, ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN, ANIMATION_UNLOCKED_SCREEN_OFF})
private @interface AnimationType {}
void onDozeAmountChanged(float linear, float eased, @AnimationType int animationType) {
mAnimationType = animationType;
mInterpolatedDarkAmount = eased; mInterpolatedDarkAmount = eased;
updateAlpha(); updateAlpha();
} }
@@ -262,7 +276,7 @@ public class UdfpsKeyguardView extends UdfpsAnimationView {
pw.println(" mUnpausedAlpha=" + getUnpausedAlpha()); pw.println(" mUnpausedAlpha=" + getUnpausedAlpha());
pw.println(" mUdfpsRequested=" + mUdfpsRequested); pw.println(" mUdfpsRequested=" + mUdfpsRequested);
pw.println(" mInterpolatedDarkAmount=" + mInterpolatedDarkAmount); pw.println(" mInterpolatedDarkAmount=" + mInterpolatedDarkAmount);
pw.println(" mAnimatingBetweenAodAndLockscreen=" + mAnimatingBetweenAodAndLockscreen); pw.println(" mAnimationType=" + mAnimationType);
} }
private final AsyncLayoutInflater.OnInflateFinishedListener mLayoutInflaterFinishListener = private final AsyncLayoutInflater.OnInflateFinishedListener mLayoutInflaterFinishListener =

View File

@@ -121,7 +121,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
mView.onDozeAmountChanged( mView.onDozeAmountChanged(
animation.getAnimatedFraction(), animation.getAnimatedFraction(),
(float) animation.getAnimatedValue(), (float) animation.getAnimatedValue(),
/* animatingBetweenAodAndLockScreen */ false); UdfpsKeyguardView.ANIMATION_UNLOCKED_SCREEN_OFF);
} }
}); });
} }
@@ -394,7 +394,7 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
mUnlockedScreenOffDozeAnimator.start(); mUnlockedScreenOffDozeAnimator.start();
} else { } else {
mView.onDozeAmountChanged(linear, eased, mView.onDozeAmountChanged(linear, eased,
/* animatingBetweenAodAndLockScreen */ true); UdfpsKeyguardView.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN);
} }
mLastDozeAmount = linear; mLastDozeAmount = linear;
@@ -404,7 +404,6 @@ public class UdfpsKeyguardViewController extends UdfpsAnimationViewController<Ud
@Override @Override
public void onStateChanged(int statusBarState) { public void onStateChanged(int statusBarState) {
mStatusBarState = statusBarState; mStatusBarState = statusBarState;
mView.setStatusBarState(statusBarState);
updateAlpha(); updateAlpha();
updatePauseAuth(); updatePauseAuth();
} }

View File

@@ -168,7 +168,8 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
mController.onViewAttached(); mController.onViewAttached();
verify(mView, atLeast(1)).setPauseAuth(true); verify(mView, atLeast(1)).setPauseAuth(true);
verify(mView).onDozeAmountChanged(dozeAmount, dozeAmount, true); verify(mView).onDozeAmountChanged(dozeAmount, dozeAmount,
UdfpsKeyguardView.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN);
} }
@Test @Test
@@ -195,7 +196,8 @@ public class UdfpsKeyguardViewControllerTest extends SysuiTestCase {
final float eased = .65f; final float eased = .65f;
mStatusBarStateListener.onDozeAmountChanged(linear, eased); mStatusBarStateListener.onDozeAmountChanged(linear, eased);
verify(mView).onDozeAmountChanged(linear, eased, true); verify(mView).onDozeAmountChanged(linear, eased,
UdfpsKeyguardView.ANIMATION_BETWEEN_AOD_AND_LOCKSCREEN);
} }
@Test @Test