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
This commit is contained in:
@@ -30,15 +30,18 @@
|
||||
|
||||
<!-- Title -->
|
||||
<com.google.android.setupdesign.view.RichTextView
|
||||
style="@style/SudDescription.Glif"
|
||||
android:id="@+id/title"
|
||||
android:paddingHorizontal="8dp"
|
||||
android:paddingTop="8dp"
|
||||
android:paddingBottom="4dp"
|
||||
android:gravity="start"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_toStartOf="@+id/toggle"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/sud_description_text_size"
|
||||
/>
|
||||
|
||||
<!-- Subtitle -->
|
||||
<TextView
|
||||
@@ -50,7 +53,8 @@
|
||||
android:layout_below="@+id/title"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/security_settings_face_enroll_introduction_accessibility_expanded"/>
|
||||
android:text="@string/security_settings_face_enroll_introduction_accessibility_expanded"
|
||||
android:textColor="?android:attr/textColorSecondary"/>
|
||||
|
||||
<!-- Vertical divider -->
|
||||
<View
|
||||
|
@@ -21,7 +21,8 @@
|
||||
style="?attr/face_layout_theme"
|
||||
android:id="@+id/setup_wizard_layout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
app:sucHeaderText="@string/security_settings_face_enroll_education_title">
|
||||
|
||||
<LinearLayout
|
||||
style="@style/SudContentFrame"
|
||||
@@ -38,7 +39,7 @@
|
||||
<FrameLayout
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="-32dp">
|
||||
android:layout_marginTop="-24dp">
|
||||
|
||||
<com.google.android.setupdesign.view.IllustrationVideoView
|
||||
android:id="@+id/illustration_default"
|
||||
@@ -97,7 +98,7 @@
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:visibility="gone"
|
||||
app:messageText="@string/security_settings_face_enroll_introduction_accessibility_diversity"/>
|
||||
app:messageText="@string/security_settings_face_enroll_introduction_accessibility"/>
|
||||
|
||||
</FrameLayout>
|
||||
|
||||
|
@@ -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();
|
||||
|
Reference in New Issue
Block a user