Use Lottie animation for traffic light face education
Test: Manual Bug: 182716681 Change-Id: Ia4c9dea5c900c71ec7eca7946cf090fd02b436e2
This commit is contained in:
@@ -72,6 +72,7 @@ android_library {
|
|||||||
"zxing-core-1.7",
|
"zxing-core-1.7",
|
||||||
"android.hardware.dumpstate-V1.0-java",
|
"android.hardware.dumpstate-V1.0-java",
|
||||||
"android.hardware.dumpstate-V1.1-java",
|
"android.hardware.dumpstate-V1.1-java",
|
||||||
|
"lottie",
|
||||||
],
|
],
|
||||||
|
|
||||||
libs: [
|
libs: [
|
||||||
|
@@ -41,12 +41,22 @@
|
|||||||
android:layout_marginVertical="12dp">
|
android:layout_marginVertical="12dp">
|
||||||
|
|
||||||
<com.google.android.setupdesign.view.IllustrationVideoView
|
<com.google.android.setupdesign.view.IllustrationVideoView
|
||||||
android:id="@+id/illustration_normal"
|
android:id="@+id/illustration_default"
|
||||||
style="@style/SudContentIllustration"
|
style="@style/SudContentIllustration"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
app:sudVideo="@raw/face_education"/>
|
app:sudVideo="@raw/face_education"/>
|
||||||
|
|
||||||
|
<com.airbnb.lottie.LottieAnimationView
|
||||||
|
android:id="@+id/illustration_lottie"
|
||||||
|
android:layout_width="match_parent"
|
||||||
|
android:layout_height="340dp"
|
||||||
|
android:scaleType="fitCenter"
|
||||||
|
android:visibility="invisible"
|
||||||
|
app:lottie_autoPlay="true"
|
||||||
|
app:lottie_loop="true"
|
||||||
|
app:lottie_rawRes="@raw/face_education_lottie" />
|
||||||
|
|
||||||
<ImageView
|
<ImageView
|
||||||
android:id="@+id/illustration_accessibility"
|
android:id="@+id/illustration_accessibility"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="wrap_content"
|
||||||
|
0
res/raw/face_education_lottie.json
Normal file
0
res/raw/face_education_lottie.json
Normal file
@@ -269,6 +269,9 @@
|
|||||||
<!-- ComponentName to launch a vendor-specific enrollment activity if available -->
|
<!-- ComponentName to launch a vendor-specific enrollment activity if available -->
|
||||||
<string name="config_face_enroll" translatable="false"></string>
|
<string name="config_face_enroll" translatable="false"></string>
|
||||||
|
|
||||||
|
<!-- Whether to use the Lottie animation for the face education enrollment screen -->
|
||||||
|
<bool name="config_face_education_use_lottie">false</bool>
|
||||||
|
|
||||||
<!-- App intent -->
|
<!-- App intent -->
|
||||||
<string name="config_account_intent_uri" translatable="false"></string>
|
<string name="config_account_intent_uri" translatable="false"></string>
|
||||||
|
|
||||||
|
@@ -37,6 +37,7 @@ import com.android.settings.biometrics.BiometricEnrollBase;
|
|||||||
import com.android.settings.biometrics.BiometricUtils;
|
import com.android.settings.biometrics.BiometricUtils;
|
||||||
import com.android.settings.password.ChooseLockSettingsHelper;
|
import com.android.settings.password.ChooseLockSettingsHelper;
|
||||||
|
|
||||||
|
import com.airbnb.lottie.LottieAnimationView;
|
||||||
import com.google.android.setupcompat.template.FooterBarMixin;
|
import com.google.android.setupcompat.template.FooterBarMixin;
|
||||||
import com.google.android.setupcompat.template.FooterButton;
|
import com.google.android.setupcompat.template.FooterButton;
|
||||||
import com.google.android.setupcompat.util.WizardManagerHelper;
|
import com.google.android.setupcompat.util.WizardManagerHelper;
|
||||||
@@ -52,7 +53,9 @@ public class FaceEnrollEducation extends BiometricEnrollBase {
|
|||||||
private FaceManager mFaceManager;
|
private FaceManager mFaceManager;
|
||||||
private FaceEnrollAccessibilityToggle mSwitchDiversity;
|
private FaceEnrollAccessibilityToggle mSwitchDiversity;
|
||||||
|
|
||||||
private IllustrationVideoView mIllustrationNormal;
|
private boolean mIsUsingLottie;
|
||||||
|
private IllustrationVideoView mIllustrationDefault;
|
||||||
|
private LottieAnimationView mIllustrationLottie;
|
||||||
private View mIllustrationAccessibility;
|
private View mIllustrationAccessibility;
|
||||||
private Handler mHandler;
|
private Handler mHandler;
|
||||||
private Intent mResultIntent;
|
private Intent mResultIntent;
|
||||||
@@ -78,12 +81,10 @@ public class FaceEnrollEducation extends BiometricEnrollBase {
|
|||||||
updateHeaders(headerRes, descriptionRes);
|
updateHeaders(headerRes, descriptionRes);
|
||||||
|
|
||||||
if (isChecked) {
|
if (isChecked) {
|
||||||
mIllustrationNormal.stop();
|
hideDefaultIllustration();
|
||||||
mIllustrationNormal.setVisibility(View.INVISIBLE);
|
|
||||||
mIllustrationAccessibility.setVisibility(View.VISIBLE);
|
mIllustrationAccessibility.setVisibility(View.VISIBLE);
|
||||||
} else {
|
} else {
|
||||||
mIllustrationNormal.setVisibility(View.VISIBLE);
|
showDefaultIllustration();
|
||||||
mIllustrationNormal.start();
|
|
||||||
mIllustrationAccessibility.setVisibility(View.INVISIBLE);
|
mIllustrationAccessibility.setVisibility(View.INVISIBLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -102,10 +103,19 @@ public class FaceEnrollEducation extends BiometricEnrollBase {
|
|||||||
|
|
||||||
mFaceManager = Utils.getFaceManagerOrNull(this);
|
mFaceManager = Utils.getFaceManagerOrNull(this);
|
||||||
|
|
||||||
mIllustrationNormal = findViewById(R.id.illustration_normal);
|
mIllustrationDefault = findViewById(R.id.illustration_default);
|
||||||
|
mIllustrationLottie = findViewById(R.id.illustration_lottie);
|
||||||
mIllustrationAccessibility = findViewById(R.id.illustration_accessibility);
|
mIllustrationAccessibility = findViewById(R.id.illustration_accessibility);
|
||||||
mDescriptionText = findViewById(R.id.sud_layout_description);
|
mDescriptionText = findViewById(R.id.sud_layout_description);
|
||||||
|
|
||||||
|
mIsUsingLottie = getResources().getBoolean(R.bool.config_face_education_use_lottie);
|
||||||
|
if (mIsUsingLottie) {
|
||||||
|
mIllustrationDefault.stop();
|
||||||
|
mIllustrationDefault.setVisibility(View.INVISIBLE);
|
||||||
|
mIllustrationLottie.setVisibility(View.VISIBLE);
|
||||||
|
mIllustrationLottie.playAnimation();
|
||||||
|
}
|
||||||
|
|
||||||
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
mFooterBarMixin = getLayout().getMixin(FooterBarMixin.class);
|
||||||
|
|
||||||
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
if (WizardManagerHelper.isAnySetupWizard(getIntent())) {
|
||||||
@@ -256,4 +266,24 @@ public class FaceEnrollEducation extends BiometricEnrollBase {
|
|||||||
layout.setHeaderText(headerText);
|
layout.setHeaderText(headerText);
|
||||||
layout.setDescriptionText(descriptionRes);
|
layout.setDescriptionText(descriptionRes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void hideDefaultIllustration() {
|
||||||
|
if (mIsUsingLottie) {
|
||||||
|
mIllustrationLottie.cancelAnimation();
|
||||||
|
mIllustrationLottie.setVisibility(View.INVISIBLE);
|
||||||
|
} else {
|
||||||
|
mIllustrationDefault.stop();
|
||||||
|
mIllustrationDefault.setVisibility(View.INVISIBLE);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void showDefaultIllustration() {
|
||||||
|
if (mIsUsingLottie) {
|
||||||
|
mIllustrationLottie.setVisibility(View.VISIBLE);
|
||||||
|
mIllustrationLottie.playAnimation();
|
||||||
|
} else {
|
||||||
|
mIllustrationDefault.setVisibility(View.VISIBLE);
|
||||||
|
mIllustrationDefault.start();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user