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

Commit 488f69a0 authored by Diya Bera's avatar Diya Bera Committed by Android (Google) Code Review
Browse files

Merge "Add animation for progress bar and lottie in fingerprint enrollment"

parents 92a4144f e211c103
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -32,11 +32,13 @@
        android:clipChildren="false">

        <RelativeLayout
            android:id="@+id/progress_lottie"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:gravity="center"
            android:orientation="vertical">
            android:orientation="vertical"
            android:translationX="0dp">

            <!-- Animation res MUST be set in code -->
            <com.airbnb.lottie.LottieAnimationView
+19 −0
Original line number Diff line number Diff line
@@ -58,11 +58,13 @@ import android.view.View;
import android.view.ViewGroup;
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.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.IdRes;
@@ -201,6 +203,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    private boolean mHaveShownSfpsRightEdgeLottie;
    private boolean mShouldShowLottie;
    private UdfpsUtils mUdfpsUtils;
    private ObjectAnimator mHelpAnimation;

    private OrientationEventListener mOrientationEventListener;
    private int mPreviousRotation = 0;
@@ -327,6 +330,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        } else if (mCanAssumeSfps) {
            setContentView(R.layout.sfps_enroll_enrolling);
            setDescriptionText(R.string.security_settings_fingerprint_enroll_start_message);
            setHelpAnimation();
        } else {
            setContentView(R.layout.fingerprint_enroll_enrolling);
            setDescriptionText(R.string.security_settings_fingerprint_enroll_start_message);
@@ -419,6 +423,17 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        maybeHideSfpsText(config);
    }

    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);
    }
    @Override
    protected BiometricEnrollSidecar getSidecar() {
        final FingerprintEnrollSidecar sidecar = new FingerprintEnrollSidecar(this,
@@ -836,6 +851,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        if (!TextUtils.isEmpty(helpString)) {
            if (!(mCanAssumeUdfps || mCanAssumeSfps)) {
                mErrorText.removeCallbacks(mTouchAgainRunnable);
                mErrorText.removeCallbacks(mTouchAgainRunnable);
            }
            showError(helpString);

@@ -958,6 +974,9 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
            // Show nothing for subtitle when getting an error message.
            setDescriptionText("");
            if (mCanAssumeSfps) {
                if (!mHelpAnimation.isRunning()) {
                    mHelpAnimation.start();
                }
                applySfpsErrorDynamicColors(getApplicationContext(), true);
            }
        } else {
+12 −0
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import android.animation.ObjectAnimator;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Resources;
@@ -80,6 +81,8 @@ public class FingerprintEnrollEnrollingTest {

    @Mock private LottieAnimationView mIllustrationLottie;

    @Mock private ObjectAnimator mHelpAnimation;

    @Mock private FingerprintEnrollSidecar mSidecar;

    @Mock private Display mMockDisplay;
@@ -212,6 +215,15 @@ public class FingerprintEnrollEnrollingTest {
        assertThat(observedLottieAssetOrder).isEqualTo(expectedLottieAssetOrder);
    }

    @Test
    public void fingerprintSfpsEnrollHelpAnimation() {
        initializeActivityFor(TYPE_POWER_BUTTON);
        ReflectionHelpers.setField(mActivity, "mHelpAnimation", mHelpAnimation);
        mActivity.onEnrollmentHelp(0 /* helpMsgId */, "Test help message" /* helpString */);

        verify(mHelpAnimation).start();
    }

    // SFPS_STAGE_CENTER is first stage with progress bar colors, starts at steps=25, remaining=25
    private void configureSfpsStageColorTest() {
        when(mSidecar.getEnrollmentSteps()).thenReturn(25);