From d3a07c29bf4f19af7e07260421f86fe5bdfbc0f8 Mon Sep 17 00:00:00 2001 From: Curtis Belmonte Date: Wed, 23 Jun 2021 14:16:22 -0700 Subject: [PATCH] Fix face education UX for both grid and traffic light Makes the following adjustments to the UI of the Face Unlock education screen for both the grid and traffic light enrollment flows: - Fixes issues with text being overlapped by illustrations - Prevents views from moving vertically due to state changes - Ensures no scroll is required for default locale and scaling - Adjusts the color and content of the a11y setup toggle Test: Manual: 1. Start grid-based face enrollment (e.g. from Settings > Security) 2. Proceed to "How to set up Face Unlock" screen 3. Tap "Setup for limited vision or head motion" 4. Toggle "Setup for limited vision or head motion" switch off and on 5. Repeat steps 1-4 for traffic light face enrollment Fixes: 191105436 Fixes: 191317385 Change-Id: Ie80f5b3130b5b0aeceb889f53cc2dec8c7423e47 --- .../face_enroll_accessibility_toggle.xml | 10 +++-- res/layout/face_enroll_education.xml | 7 +-- .../biometrics/face/FaceEnrollEducation.java | 44 +++---------------- 3 files changed, 18 insertions(+), 43 deletions(-) diff --git a/res/layout/face_enroll_accessibility_toggle.xml b/res/layout/face_enroll_accessibility_toggle.xml index bb3a7ffb99d..a56655dafb9 100644 --- a/res/layout/face_enroll_accessibility_toggle.xml +++ b/res/layout/face_enroll_accessibility_toggle.xml @@ -30,15 +30,18 @@ + android:layout_height="wrap_content" + android:textColor="?android:attr/textColorPrimary" + android:textSize="@dimen/sud_description_text_size" + /> + android:text="@string/security_settings_face_enroll_introduction_accessibility_expanded" + android:textColor="?android:attr/textColorSecondary"/> + android:layout_height="match_parent" + app:sucHeaderText="@string/security_settings_face_enroll_education_title"> + android:layout_marginTop="-24dp"> + app:messageText="@string/security_settings_face_enroll_introduction_accessibility"/> diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java index 8e2d3f4b6bc..65ab2e7c783 100644 --- a/src/com/android/settings/biometrics/face/FaceEnrollEducation.java +++ b/src/com/android/settings/biometrics/face/FaceEnrollEducation.java @@ -16,20 +16,17 @@ package com.android.settings.biometrics.face; -import android.annotation.StringRes; import android.app.settings.SettingsEnums; import android.content.ComponentName; import android.content.Intent; import android.hardware.face.FaceManager; import android.os.Bundle; -import android.os.Handler; import android.os.UserHandle; import android.text.TextUtils; import android.view.View; import android.view.accessibility.AccessibilityManager; import android.widget.Button; import android.widget.CompoundButton; -import android.widget.TextView; import com.android.settings.R; import com.android.settings.Utils; @@ -41,14 +38,10 @@ import com.airbnb.lottie.LottieAnimationView; import com.google.android.setupcompat.template.FooterBarMixin; import com.google.android.setupcompat.template.FooterButton; import com.google.android.setupcompat.util.WizardManagerHelper; -import com.google.android.setupdesign.GlifLayout; import com.google.android.setupdesign.view.IllustrationVideoView; public class FaceEnrollEducation extends BiometricEnrollBase { - private static final String TAG = "FaceEducation"; - private static final int ON = 1; - private static final int OFF = 0; private FaceManager mFaceManager; private FaceEnrollAccessibilityToggle mSwitchDiversity; @@ -57,28 +50,18 @@ public class FaceEnrollEducation extends BiometricEnrollBase { private IllustrationVideoView mIllustrationDefault; private LottieAnimationView mIllustrationLottie; private View mIllustrationAccessibility; - private Handler mHandler; private Intent mResultIntent; - private TextView mDescriptionText; private boolean mNextClicked; private boolean mAccessibilityEnabled; - private CompoundButton.OnCheckedChangeListener mSwitchDiversityListener = + private final CompoundButton.OnCheckedChangeListener mSwitchDiversityListener = new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { - final int headerRes; - final int descriptionRes; - if (isChecked) { - headerRes = R.string - .security_settings_face_enroll_education_title_accessibility; - descriptionRes = R.string - .security_settings_face_enroll_education_message_accessibility; - } else { - headerRes = R.string.security_settings_face_enroll_education_title; - descriptionRes = R.string.security_settings_face_enroll_education_message; - } - updateHeaders(headerRes, descriptionRes); + final int descriptionRes = isChecked + ? R.string.security_settings_face_enroll_education_message_accessibility + : R.string.security_settings_face_enroll_education_message; + setDescriptionText(descriptionRes); if (isChecked) { hideDefaultIllustration(); @@ -95,18 +78,14 @@ public class FaceEnrollEducation extends BiometricEnrollBase { super.onCreate(savedInstanceState); setContentView(R.layout.face_enroll_education); - final int headerRes = R.string.security_settings_face_enroll_education_title; - final int descriptionRes = R.string.security_settings_face_enroll_education_message; - updateHeaders(headerRes, descriptionRes); - - mHandler = new Handler(); + setTitle(R.string.security_settings_face_enroll_education_title); + setDescriptionText(R.string.security_settings_face_enroll_education_message); mFaceManager = Utils.getFaceManagerOrNull(this); mIllustrationDefault = findViewById(R.id.illustration_default); mIllustrationLottie = findViewById(R.id.illustration_lottie); mIllustrationAccessibility = findViewById(R.id.illustration_accessibility); - mDescriptionText = findViewById(R.id.sud_layout_description); mIsUsingLottie = getResources().getBoolean(R.bool.config_face_education_use_lottie); if (mIsUsingLottie) { @@ -259,15 +238,6 @@ public class FaceEnrollEducation extends BiometricEnrollBase { return SettingsEnums.FACE_ENROLL_INTRO; } - private void updateHeaders(@StringRes int headerRes, @StringRes int descriptionRes) { - final CharSequence headerText = getText(headerRes); - setTitle(headerText); - - final GlifLayout layout = getLayout(); - layout.setHeaderText(headerText); - layout.setDescriptionText(descriptionRes); - } - private void hideDefaultIllustration() { if (mIsUsingLottie) { mIllustrationLottie.cancelAnimation();