Update help animation per new spec
Bug: 288155127 Bug: 305834550 Test: manually Change-Id: I0731d65bbcbefa30c25b53e625d07b4e5771c78d
This commit is contained in:
@@ -53,7 +53,6 @@ import android.view.Surface;
|
|||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.accessibility.AccessibilityEvent;
|
import android.view.accessibility.AccessibilityEvent;
|
||||||
import android.view.accessibility.AccessibilityManager;
|
import android.view.accessibility.AccessibilityManager;
|
||||||
import android.view.animation.AccelerateDecelerateInterpolator;
|
|
||||||
import android.view.animation.AnimationUtils;
|
import android.view.animation.AnimationUtils;
|
||||||
import android.view.animation.Interpolator;
|
import android.view.animation.Interpolator;
|
||||||
import android.widget.ProgressBar;
|
import android.widget.ProgressBar;
|
||||||
@@ -190,7 +189,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
private boolean mHaveShownSfpsRightEdgeLottie;
|
private boolean mHaveShownSfpsRightEdgeLottie;
|
||||||
private boolean mShouldShowLottie;
|
private boolean mShouldShowLottie;
|
||||||
|
|
||||||
private ObjectAnimator mHelpAnimation;
|
private Animator mHelpAnimation;
|
||||||
|
|
||||||
private OrientationEventListener mOrientationEventListener;
|
private OrientationEventListener mOrientationEventListener;
|
||||||
private int mPreviousRotation = 0;
|
private int mPreviousRotation = 0;
|
||||||
@@ -332,16 +331,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void setHelpAnimation() {
|
private void setHelpAnimation() {
|
||||||
final float translationX = 40;
|
|
||||||
final int duration = 550;
|
|
||||||
final RelativeLayout progressLottieLayout = findViewById(R.id.progress_lottie);
|
final RelativeLayout progressLottieLayout = findViewById(R.id.progress_lottie);
|
||||||
mHelpAnimation = ObjectAnimator.ofFloat(progressLottieLayout,
|
mHelpAnimation = mSfpsEnrollmentFeature.getHelpAnimator(progressLottieLayout);
|
||||||
"translationX" /* propertyName */,
|
|
||||||
0, translationX, -1 * translationX, translationX, 0f);
|
|
||||||
mHelpAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
|
|
||||||
mHelpAnimation.setDuration(duration);
|
|
||||||
mHelpAnimation.setAutoCancel(false);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected BiometricEnrollSidecar getSidecar() {
|
protected BiometricEnrollSidecar getSidecar() {
|
||||||
final FingerprintEnrollSidecar sidecar = new FingerprintEnrollSidecar(this,
|
final FingerprintEnrollSidecar sidecar = new FingerprintEnrollSidecar(this,
|
||||||
@@ -689,6 +682,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
view.setComposition(composition);
|
view.setComposition(composition);
|
||||||
view.setVisibility(View.VISIBLE);
|
view.setVisibility(View.VISIBLE);
|
||||||
view.playAnimation();
|
view.playAnimation();
|
||||||
|
if (mCanAssumeSfps) {
|
||||||
|
mSfpsEnrollmentFeature.handleOnEnrollmentLottieComposition(view);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@EnrollStage
|
@EnrollStage
|
||||||
@@ -1212,5 +1208,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
|
|||||||
public float getEnrollStageThreshold(@NonNull Context context, int index) {
|
public float getEnrollStageThreshold(@NonNull Context context, int index) {
|
||||||
throw new IllegalStateException(exceptionStr);
|
throw new IllegalStateException(exceptionStr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Animator getHelpAnimator(@NonNull View target) {
|
||||||
|
throw new IllegalStateException(exceptionStr);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -16,12 +16,16 @@
|
|||||||
|
|
||||||
package com.android.settings.biometrics.fingerprint.feature;
|
package com.android.settings.biometrics.fingerprint.feature;
|
||||||
|
|
||||||
|
import android.animation.Animator;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.view.View;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
|
|
||||||
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
|
import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
|
||||||
|
|
||||||
|
import com.airbnb.lottie.LottieAnimationView;
|
||||||
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.function.Supplier;
|
import java.util.function.Supplier;
|
||||||
|
|
||||||
@@ -76,4 +80,17 @@ public interface SfpsEnrollmentFeature {
|
|||||||
* @return threshold
|
* @return threshold
|
||||||
*/
|
*/
|
||||||
float getEnrollStageThreshold(@NonNull Context context, int index);
|
float getEnrollStageThreshold(@NonNull Context context, int index);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Gets the help animator used when get help message.
|
||||||
|
* @param target the target view to animate
|
||||||
|
* @return animator
|
||||||
|
*/
|
||||||
|
Animator getHelpAnimator(@NonNull View target);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handles extra stuffs on lottie composition.
|
||||||
|
* @param lottieView the view related to the lottie
|
||||||
|
*/
|
||||||
|
default void handleOnEnrollmentLottieComposition(LottieAnimationView lottieView) {}
|
||||||
}
|
}
|
||||||
|
@@ -23,8 +23,12 @@ import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrol
|
|||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_RIGHT_EDGE;
|
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.SFPS_STAGE_RIGHT_EDGE;
|
||||||
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.STAGE_UNKNOWN;
|
import static com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling.STAGE_UNKNOWN;
|
||||||
|
|
||||||
|
import android.animation.Animator;
|
||||||
|
import android.animation.ObjectAnimator;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.hardware.fingerprint.FingerprintManager;
|
import android.hardware.fingerprint.FingerprintManager;
|
||||||
|
import android.view.View;
|
||||||
|
import android.view.animation.AccelerateInterpolator;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.annotation.Nullable;
|
||||||
@@ -88,4 +92,17 @@ public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature {
|
|||||||
}
|
}
|
||||||
return mFingerprintManager.getEnrollStageThreshold(index);
|
return mFingerprintManager.getEnrollStageThreshold(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Animator getHelpAnimator(@NonNull View target) {
|
||||||
|
final float translationX = 40;
|
||||||
|
final int duration = 550;
|
||||||
|
final ObjectAnimator help = ObjectAnimator.ofFloat(target,
|
||||||
|
"translationX" /* propertyName */,
|
||||||
|
0, translationX, -1 * translationX, translationX, 0f);
|
||||||
|
help.setInterpolator(new AccelerateInterpolator());
|
||||||
|
help.setDuration(duration);
|
||||||
|
help.setAutoCancel(false);
|
||||||
|
return help;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user