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

Commit 1ab510bc authored by Wu Ahan's avatar Wu Ahan Committed by Android (Google) Code Review
Browse files

Merge "Update help animation per new spec" into main

parents 7429837e 740d345f
Loading
Loading
Loading
Loading
+11 −10
Original line number Diff line number Diff line
@@ -53,7 +53,6 @@ import android.view.Surface;
import android.view.View;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
import android.view.animation.AccelerateDecelerateInterpolator;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.ProgressBar;
@@ -191,7 +190,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    private boolean mHaveShownSfpsRightEdgeLottie;
    private boolean mShouldShowLottie;

    private ObjectAnimator mHelpAnimation;
    private Animator mHelpAnimation;

    private OrientationEventListener mOrientationEventListener;
    private int mPreviousRotation = 0;
@@ -341,16 +340,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    }

    private void setHelpAnimation() {
        final float translationX = 40;
        final int duration = 550;
        final RelativeLayout progressLottieLayout = findViewById(R.id.progress_lottie);
        mHelpAnimation = ObjectAnimator.ofFloat(progressLottieLayout,
                "translationX" /* propertyName */,
                0, translationX, -1 * translationX, translationX, 0f);
        mHelpAnimation.setInterpolator(new AccelerateDecelerateInterpolator());
        mHelpAnimation.setDuration(duration);
        mHelpAnimation.setAutoCancel(false);
        mHelpAnimation = mSfpsEnrollmentFeature.getHelpAnimator(progressLottieLayout);
    }

    @Override
    protected BiometricEnrollSidecar getSidecar() {
        final FingerprintEnrollSidecar sidecar = new FingerprintEnrollSidecar(this,
@@ -703,6 +696,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        view.setComposition(composition);
        view.setVisibility(View.VISIBLE);
        view.playAnimation();
        if (mCanAssumeSfps) {
            mSfpsEnrollmentFeature.handleOnEnrollmentLottieComposition(view);
        }
    }

    @EnrollStage
@@ -1226,5 +1222,10 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        public float getEnrollStageThreshold(@NonNull Context context, int index) {
            throw new IllegalStateException(exceptionStr);
        }

        @Override
        public Animator getHelpAnimator(@NonNull View target) {
            throw new IllegalStateException(exceptionStr);
        }
    }
}
+17 −0
Original line number Diff line number Diff line
@@ -16,12 +16,16 @@

package com.android.settings.biometrics.fingerprint.feature;

import android.animation.Animator;
import android.content.Context;
import android.view.View;

import androidx.annotation.NonNull;

import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;

import com.airbnb.lottie.LottieAnimationView;

import java.util.function.Function;
import java.util.function.Supplier;

@@ -76,4 +80,17 @@ public interface SfpsEnrollmentFeature {
     * @return threshold
     */
    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) {}
}
+17 −0
Original line number Diff line number Diff line
@@ -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.STAGE_UNKNOWN;

import android.animation.Animator;
import android.animation.ObjectAnimator;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.view.View;
import android.view.animation.AccelerateInterpolator;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
@@ -88,4 +92,17 @@ public class SfpsEnrollmentFeatureImpl implements SfpsEnrollmentFeature {
        }
        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;
    }
}