Merge "Migrating to new footer button for fingerprint and face enrolling pages."

This commit is contained in:
Pasty Chang
2018-12-20 07:07:29 +00:00
committed by Android (Google) Code Review
36 changed files with 234 additions and 414 deletions

View File

@@ -24,7 +24,6 @@ import android.os.Bundle;
import android.os.UserHandle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.android.settings.R;
@@ -33,13 +32,14 @@ import com.android.settings.biometrics.fingerprint.FingerprintEnrollEnrolling;
import com.android.settings.core.InstrumentedActivity;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
import com.google.android.setupdesign.GlifLayout;
/**
* Base activity for all biometric enrollment steps.
*/
public abstract class BiometricEnrollBase extends InstrumentedActivity
implements View.OnClickListener {
public abstract class BiometricEnrollBase extends InstrumentedActivity {
public static final String EXTRA_KEY_LAUNCHED_CONFIRM = "launched_confirm_lock";
public static final String EXTRA_KEY_REQUIRE_VISION = "accessibility_vision";
@@ -78,6 +78,7 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity
protected boolean mLaunchedConfirmLock;
protected byte[] mToken;
protected int mUserId;
protected ButtonFooterMixin mButtonFooterMixin;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -112,10 +113,6 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity
protected void initViews() {
getWindow().setStatusBarColor(Color.TRANSPARENT);
Button nextButton = getNextButton();
if (nextButton != null) {
nextButton.setOnClickListener(this);
}
}
protected GlifLayout getLayout() {
@@ -139,18 +136,14 @@ public abstract class BiometricEnrollBase extends InstrumentedActivity
setHeaderText(resId, false /* force */);
}
protected Button getNextButton() {
return (Button) findViewById(R.id.next_button);
}
@Override
public void onClick(View v) {
if (v == getNextButton()) {
onNextButtonClick();
protected FooterButton getNextButton() {
if (mButtonFooterMixin != null) {
return mButtonFooterMixin.getPrimaryButton();
}
return null;
}
protected void onNextButtonClick() {
protected void onNextButtonClick(View view) {
}
protected Intent getFingerprintEnrollingIntent() {

View File

@@ -22,13 +22,13 @@ import android.os.Bundle;
import android.os.UserHandle;
import android.os.UserManager;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import com.android.settings.R;
import com.android.settings.password.ChooseLockGeneric;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupdesign.span.LinkSpan;
/**
@@ -70,12 +70,12 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
/**
* @return the cancel button
*/
protected abstract Button getCancelButton();
protected abstract FooterButton getCancelButton();
/**
* @return the next button
*/
protected abstract Button getNextButton();
protected abstract FooterButton getNextButton();
/**
* @return the error TextView
@@ -127,9 +127,6 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
setHeaderText(getHeaderResDefault());
}
Button cancelButton = getCancelButton();
cancelButton.setOnClickListener(v -> onCancelButtonClick());
mErrorText = getErrorTextView();
mUserManager = UserManager.get(this);
@@ -164,7 +161,7 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
}
@Override
protected void onNextButtonClick() {
protected void onNextButtonClick(View view) {
// Lock thingy is already set up, launch directly to the next page
launchNextEnrollingActivity(mToken);
}
@@ -234,7 +231,7 @@ public abstract class BiometricEnrollIntroduction extends BiometricEnrollBase
super.onActivityResult(requestCode, resultCode, data);
}
protected void onCancelButtonClick() {
protected void onCancelButtonClick(View view) {
finish();
}

View File

@@ -85,16 +85,9 @@ public abstract class BiometricsEnrollEnrolling extends BiometricEnrollBase
super.onBackPressed();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.skip_button:
setResult(RESULT_SKIP);
finish();
break;
default:
super.onClick(v);
}
protected void onSkipButtonClick(View view) {
setResult(RESULT_SKIP);
finish();
}
public void startEnrollment() {

View File

@@ -24,7 +24,6 @@ import android.util.Log;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.Button;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto;
@@ -36,6 +35,8 @@ import com.android.settings.biometrics.BiometricsEnrollEnrolling;
import java.util.ArrayList;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
public class FaceEnrollEnrolling extends BiometricsEnrollEnrolling {
@@ -91,8 +92,15 @@ public class FaceEnrollEnrolling extends BiometricsEnrollEnrolling {
mLinearOutSlowInInterpolator = AnimationUtils.loadInterpolator(
this, android.R.interpolator.linear_out_slow_in);
Button skipButton = findViewById(R.id.skip_button);
skipButton.setOnClickListener(this);
mButtonFooterMixin = getLayout().getMixin(ButtonFooterMixin.class);
mButtonFooterMixin.setSecondaryButton(
new FooterButton(
this,
R.string.security_settings_face_enroll_enrolling_skip,
this::onSkipButtonClick,
FooterButton.ButtonType.SKIP,
R.style.SuwGlifButton_Secondary)
);
if (!getIntent().getBooleanExtra(BiometricEnrollBase.EXTRA_KEY_REQUIRE_DIVERSITY, true)) {
mDisabledFeatures.add(FaceManager.FEATURE_REQUIRE_REQUIRE_DIVERSITY);

View File

@@ -17,11 +17,15 @@
package com.android.settings.biometrics.face;
import android.os.Bundle;
import android.view.View;
import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
/**
* Activity which concludes face enrollment.
*/
@@ -32,6 +36,16 @@ public class FaceEnrollFinish extends BiometricEnrollBase {
super.onCreate(savedInstanceState);
setContentView(R.layout.face_enroll_finish);
setHeaderText(R.string.security_settings_face_enroll_finish_title);
mButtonFooterMixin = getLayout().getMixin(ButtonFooterMixin.class);
mButtonFooterMixin.setPrimaryButton(
new FooterButton(
this,
R.string.security_settings_face_enroll_done,
this::onNextButtonClick,
FooterButton.ButtonType.NEXT,
R.style.SuwGlifButton_Primary)
);
}
@Override
@@ -40,7 +54,7 @@ public class FaceEnrollFinish extends BiometricEnrollBase {
}
@Override
public void onNextButtonClick() {
public void onNextButtonClick(View view) {
setResult(RESULT_FINISHED);
finish();
}

View File

@@ -32,6 +32,8 @@ import com.android.settings.biometrics.BiometricEnrollIntroduction;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
import com.google.android.setupdesign.span.LinkSpan;
public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
@@ -55,6 +57,25 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
mSwitchVision = findViewById(R.id.toggle_vision);
mSwitchDiversity = findViewById(R.id.toggle_diversity);
mButtonFooterMixin = getLayout().getMixin(ButtonFooterMixin.class);
mButtonFooterMixin.setSecondaryButton(
new FooterButton(
this,
R.string.security_settings_face_enroll_introduction_cancel,
this::onCancelButtonClick,
FooterButton.ButtonType.SKIP,
R.style.SuwGlifButton_Secondary)
);
mButtonFooterMixin.setPrimaryButton(
new FooterButton(
this,
R.string.wizard_next,
this::onNextButtonClick,
FooterButton.ButtonType.NEXT,
R.style.SuwGlifButton_Primary)
);
}
@Override
@@ -84,13 +105,19 @@ public class FaceEnrollIntroduction extends BiometricEnrollIntroduction {
}
@Override
protected Button getCancelButton() {
return findViewById(R.id.face_cancel_button);
protected FooterButton getCancelButton() {
if (mButtonFooterMixin != null) {
return mButtonFooterMixin.getSecondaryButton();
}
return null;
}
@Override
protected Button getNextButton() {
return findViewById(R.id.face_next_button);
protected FooterButton getNextButton() {
if (mButtonFooterMixin != null) {
return mButtonFooterMixin.getPrimaryButton();
}
return null;
}
@Override

View File

@@ -35,7 +35,6 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.animation.AnimationUtils;
import android.view.animation.Interpolator;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
@@ -48,6 +47,9 @@ import com.android.settings.biometrics.BiometricErrorDialog;
import com.android.settings.biometrics.BiometricsEnrollEnrolling;
import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
/**
* Activity which handles the actual enrolling for fingerprint.
*/
@@ -135,8 +137,15 @@ public class FingerprintEnrollEnrolling extends BiometricsEnrollEnrolling {
mProgressBar = (ProgressBar) findViewById(R.id.fingerprint_progress_bar);
mVibrator = getSystemService(Vibrator.class);
Button skipButton = findViewById(R.id.skip_button);
skipButton.setOnClickListener(this);
mButtonFooterMixin = getLayout().getMixin(ButtonFooterMixin.class);
mButtonFooterMixin.setSecondaryButton(
new FooterButton(
this,
R.string.security_settings_fingerprint_enroll_enrolling_skip,
this::onSkipButtonClick,
FooterButton.ButtonType.SKIP,
R.style.SuwGlifButton_Secondary)
);
final LayerDrawable fingerprintDrawable = (LayerDrawable) mProgressBar.getBackground();
mIconAnimationDrawable = (AnimatedVectorDrawable)

View File

@@ -20,7 +20,6 @@ import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import androidx.annotation.Nullable;
@@ -30,6 +29,8 @@ import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.android.settings.biometrics.BiometricEnrollSidecar.Listener;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
/**
* Activity explaining the fingerprint sensor location for fingerprint enrollment.
@@ -46,8 +47,15 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(getContentView());
Button skipButton = findViewById(R.id.skip_button);
skipButton.setOnClickListener(this);
mButtonFooterMixin = getLayout().getMixin(ButtonFooterMixin.class);
mButtonFooterMixin.setSecondaryButton(
new FooterButton(
this,
R.string.skip_label,
this::onSkipButtonClick,
FooterButton.ButtonType.SKIP,
R.style.SuwGlifButton_Secondary)
);
setHeaderText(R.string.security_settings_fingerprint_enroll_find_sensor_title);
@@ -120,18 +128,7 @@ public class FingerprintEnrollFindSensor extends BiometricEnrollBase {
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.skip_button:
onSkipButtonClick();
break;
default:
super.onClick(v);
}
}
protected void onSkipButtonClick() {
protected void onSkipButtonClick(View view) {
setResult(RESULT_SKIP);
finish();
}

View File

@@ -20,13 +20,15 @@ import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.biometrics.BiometricEnrollBase;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
/**
* Activity which concludes fingerprint enrollment.
*/
@@ -39,13 +41,32 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
super.onCreate(savedInstanceState);
setContentView(R.layout.fingerprint_enroll_finish);
setHeaderText(R.string.security_settings_fingerprint_enroll_finish_title);
mButtonFooterMixin = getLayout().getMixin(ButtonFooterMixin.class);
mButtonFooterMixin.setSecondaryButton(
new FooterButton(
this,
R.string.fingerprint_enroll_button_add,
null,
FooterButton.ButtonType.SKIP,
R.style.SuwGlifButton_Secondary)
);
mButtonFooterMixin.setPrimaryButton(
new FooterButton(
this,
R.string.security_settings_fingerprint_enroll_done,
this::onNextButtonClick,
FooterButton.ButtonType.NEXT,
R.style.SuwGlifButton_Primary)
);
}
@Override
protected void onResume() {
super.onResume();
Button addButton = (Button) findViewById(R.id.add_another_button);
FooterButton addButton = mButtonFooterMixin.getSecondaryButton();
final FingerprintManager fpm = Utils.getFingerprintManagerOrNull(this);
boolean hideAddAnother = false;
@@ -59,22 +80,18 @@ public class FingerprintEnrollFinish extends BiometricEnrollBase {
// Don't show "Add" button if too many fingerprints already added
addButton.setVisibility(View.INVISIBLE);
} else {
addButton.setOnClickListener(this);
addButton.setOnClickListener(this::onAddAnotherButtonClick);
}
}
@Override
protected void onNextButtonClick() {
protected void onNextButtonClick(View view) {
setResult(RESULT_FINISHED);
finish();
}
@Override
public void onClick(View v) {
if (v.getId() == R.id.add_another_button) {
startActivityForResult(getFingerprintEnrollingIntent(), REQUEST_ADD_ANOTHER);
}
super.onClick(v);
private void onAddAnotherButtonClick(View view) {
startActivityForResult(getFingerprintEnrollingIntent(), REQUEST_ADD_ANOTHER);
}
@Override

View File

@@ -22,7 +22,6 @@ import android.content.Intent;
import android.hardware.fingerprint.FingerprintManager;
import android.os.Bundle;
import android.util.Log;
import android.widget.Button;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto;
@@ -33,6 +32,8 @@ import com.android.settings.password.ChooseLockSettingsHelper;
import com.android.settingslib.HelpUtils;
import com.android.settingslib.RestrictedLockUtilsInternal;
import com.google.android.setupcompat.item.FooterButton;
import com.google.android.setupcompat.template.ButtonFooterMixin;
import com.google.android.setupdesign.span.LinkSpan;
public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
@@ -45,6 +46,25 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mFingerprintManager = Utils.getFingerprintManagerOrNull(this);
mButtonFooterMixin = getLayout().getMixin(ButtonFooterMixin.class);
mButtonFooterMixin.setSecondaryButton(
new FooterButton(
this,
R.string.security_settings_face_enroll_introduction_cancel,
this::onCancelButtonClick,
FooterButton.ButtonType.SKIP,
R.style.SuwGlifButton_Secondary)
);
mButtonFooterMixin.setPrimaryButton(
new FooterButton(
this,
R.string.wizard_next,
this::onNextButtonClick,
FooterButton.ButtonType.NEXT,
R.style.SuwGlifButton_Primary)
);
}
@Override
@@ -74,13 +94,19 @@ public class FingerprintEnrollIntroduction extends BiometricEnrollIntroduction {
}
@Override
protected Button getCancelButton() {
return findViewById(R.id.fingerprint_cancel_button);
protected FooterButton getCancelButton() {
if (mButtonFooterMixin != null) {
return mButtonFooterMixin.getSecondaryButton();
}
return null;
}
@Override
protected Button getNextButton() {
return findViewById(R.id.fingerprint_next_button);
protected FooterButton getNextButton() {
if (mButtonFooterMixin != null) {
return mButtonFooterMixin.getPrimaryButton();
}
return null;
}
@Override

View File

@@ -19,19 +19,21 @@ package com.android.settings.biometrics.fingerprint;
import android.app.admin.DevicePolicyManager;
import android.content.Context;
import android.hardware.fingerprint.FingerprintManager;
import android.widget.Button;
import com.android.settings.R;
import com.android.settings.Utils;
import com.google.android.setupcompat.item.FooterButton;
public class FingerprintSuggestionActivity extends SetupFingerprintEnrollIntroduction {
@Override
protected void initViews() {
super.initViews();
final Button cancelButton = findViewById(R.id.fingerprint_cancel_button);
cancelButton.setText(R.string.security_settings_fingerprint_enroll_introduction_cancel);
final FooterButton cancelButton = getCancelButton();
cancelButton.setText(
this, R.string.security_settings_fingerprint_enroll_introduction_cancel);
}
@Override

View File

@@ -22,6 +22,7 @@ import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
import android.view.View;
import androidx.annotation.NonNull;
import androidx.appcompat.app.AlertDialog;
@@ -53,7 +54,7 @@ public class SetupFingerprintEnrollFindSensor extends FingerprintEnrollFindSenso
}
@Override
protected void onSkipButtonClick() {
protected void onSkipButtonClick(View view) {
new SkipFingerprintDialog().show(getSupportFragmentManager());
}

View File

@@ -25,6 +25,8 @@ import com.android.settings.R;
import com.android.settings.SetupWizardUtils;
import com.android.settings.password.ChooseLockSettingsHelper;
import com.google.android.setupcompat.item.FooterButton;
public class SetupFingerprintEnrollFinish extends FingerprintEnrollFinish {
@Override
@@ -41,8 +43,8 @@ public class SetupFingerprintEnrollFinish extends FingerprintEnrollFinish {
@Override
protected void initViews() {
super.initViews();
Button nextButton = findViewById(R.id.next_button);
nextButton.setText(R.string.next_label);
FooterButton nextButton = getNextButton();
nextButton.setText(this, R.string.next_label);
}
@Override

View File

@@ -23,7 +23,7 @@ import android.content.Intent;
import android.os.Bundle;
import android.os.UserHandle;
import android.os.storage.StorageManager;
import android.widget.Button;
import android.view.View;
import android.widget.TextView;
import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -34,6 +34,8 @@ import com.android.settings.password.ChooseLockGeneric.ChooseLockGenericFragment
import com.android.settings.password.SetupChooseLockGeneric;
import com.android.settings.password.SetupSkipDialog;
import com.google.android.setupcompat.item.FooterButton;
public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntroduction {
private static final String KEY_LOCK_SCREEN_PRESENT = "wasLockScreenPresent";
private boolean mAlreadyHadLockScreenSetup = false;
@@ -84,13 +86,13 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu
description.setText(
R.string.security_settings_fingerprint_enroll_introduction_message_setup);
Button nextButton = getNextButton();
FooterButton nextButton = getNextButton();
nextButton.setText(
R.string.security_settings_fingerprint_enroll_introduction_continue_setup);
this, R.string.security_settings_fingerprint_enroll_introduction_continue_setup);
final Button cancelButton = (Button) findViewById(R.id.fingerprint_cancel_button);
final FooterButton cancelButton = getCancelButton();
cancelButton.setText(
R.string.security_settings_fingerprint_enroll_introduction_cancel_setup);
this, R.string.security_settings_fingerprint_enroll_introduction_cancel_setup);
}
@Override
@@ -116,7 +118,7 @@ public class SetupFingerprintEnrollIntroduction extends FingerprintEnrollIntrodu
}
@Override
protected void onCancelButtonClick() {
protected void onCancelButtonClick(View view) {
if (isKeyguardSecure()) {
// If the keyguard is already set up securely (maybe the user added a backup screen
// lock and skipped fingerprint), return RESULT_SKIP directly.