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

Commit a48f8944 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add animation for progress bar and lottie in fingerprint enrollment" into tm-qpr-dev

parents 7e4686c7 7eb40da9
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
@@ -53,10 +53,12 @@ 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.LinearLayout;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.IdRes;
@@ -185,6 +187,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
    private boolean mHaveShownSfpsLeftEdgeLottie;
    private boolean mHaveShownSfpsRightEdgeLottie;
    private boolean mShouldShowLottie;
    private ObjectAnimator mHelpAnimation;

    private OrientationEventListener mOrientationEventListener;
    private int mPreviousRotation = 0;
@@ -276,6 +279,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);
@@ -350,6 +354,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,
@@ -755,6 +770,7 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
        if (!TextUtils.isEmpty(helpString)) {
            if (!(mCanAssumeUdfps || mCanAssumeSfps)) {
                mErrorText.removeCallbacks(mTouchAgainRunnable);
                mErrorText.removeCallbacks(mTouchAgainRunnable);
            }
            showError(helpString);
        }
@@ -848,6 +864,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;
@@ -178,6 +181,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);