summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Joe Bolinger <jbolinger@google.com> 2021-08-25 15:54:45 -0700
committer Joe Bolinger <jbolinger@google.com> 2021-08-25 16:00:45 -0700
commit3edacaabdc6129d643b0d9fa21661422083b907d (patch)
tree72b413dbbcf7cd3417257cb7f1387594b104fdea
parent519749f60cb832d1ba33ab053611bcfcaecea210 (diff)
Add visual feedback on UDFPS enrollment help.
Fix: 191700407 Test: manual (enroll and verify progress bar turns red when help message is displayed) Change-Id: Ifda20133f1ee90c9e1612e9066c19efbb6ffc9cd
-rw-r--r--packages/SystemUI/res/values/colors.xml3
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollHelper.java5
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java59
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java4
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java5
6 files changed, 76 insertions, 4 deletions
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index bbbaf65f861b..4bbfd8ff97de 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -187,7 +187,8 @@
<!-- UDFPS colors -->
<color name="udfps_enroll_icon">#000000</color> <!-- 100% black -->
<color name="udfps_moving_target_fill">#cc4285f4</color> <!-- 80% blue -->
- <color name="udfps_enroll_progress">#ff669DF6</color> <!-- 100% blue -->
+ <color name="udfps_enroll_progress">#ff669DF6</color> <!-- blue 400 -->
+ <color name="udfps_enroll_progress_help">#ffEE675C</color> <!-- red 400 -->
<!-- Logout button -->
<color name="logout_button_bg_color">#ccffffff</color>
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java
index ea69b1d626ae..b5273abd868d 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java
@@ -143,6 +143,10 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable {
mProgressDrawable.onLastStepAcquired();
}
+ void onEnrollmentHelp() {
+ mProgressDrawable.onEnrollmentHelp();
+ }
+
@Override
public void draw(@NonNull Canvas canvas) {
mProgressDrawable.draw(canvas);
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollHelper.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollHelper.java
index 6a918a6c8d39..19148e383005 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollHelper.java
@@ -50,6 +50,7 @@ public class UdfpsEnrollHelper {
interface Listener {
void onEnrollmentProgress(int remaining, int totalSteps);
void onLastStepAcquired();
+ void onEnrollmentHelp();
}
@NonNull private final Context mContext;
@@ -138,7 +139,9 @@ public class UdfpsEnrollHelper {
}
void onEnrollmentHelp() {
-
+ if (mListener != null) {
+ mListener.onEnrollmentHelp();
+ }
}
void setListener(Listener listener) {
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java
index 4195009937c2..9c486b9ac1b4 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java
@@ -16,7 +16,9 @@
package com.android.systemui.biometrics;
+import android.animation.ArgbEvaluator;
import android.animation.ValueAnimator;
+import android.annotation.ColorInt;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
@@ -46,6 +48,11 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable {
@NonNull private final Paint mProgressPaint;
@Nullable private ValueAnimator mProgressAnimator;
+ @Nullable private ValueAnimator mProgressShowingHelpAnimator;
+ @Nullable private ValueAnimator mProgressHidingHelpAnimator;
+ @ColorInt private final int mProgressColor;
+ @ColorInt private final int mProgressHelpColor;
+ private final int mShortAnimationDuration;
private float mProgress;
private int mRotation; // After last step, rotate the progress bar once
private boolean mLastStepAcquired;
@@ -55,6 +62,11 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable {
mContext = context;
mParent = parent;
+ mShortAnimationDuration = context.getResources()
+ .getInteger(com.android.internal.R.integer.config_shortAnimTime);
+ mProgressColor = context.getColor(R.color.udfps_enroll_progress);
+ mProgressHelpColor = context.getColor(R.color.udfps_enroll_progress_help);
+
mBackgroundCirclePaint = new Paint();
mBackgroundCirclePaint.setStrokeWidth(Utils.dpToPixels(context, PROGRESS_BAR_THICKNESS_DP));
mBackgroundCirclePaint.setColor(context.getColor(R.color.white_disabled));
@@ -74,7 +86,7 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable {
// Progress should not be color extracted
mProgressPaint = new Paint();
mProgressPaint.setStrokeWidth(Utils.dpToPixels(context, PROGRESS_BAR_THICKNESS_DP));
- mProgressPaint.setColor(context.getColor(R.color.udfps_enroll_progress));
+ mProgressPaint.setColor(mProgressColor);
mProgressPaint.setAntiAlias(true);
mProgressPaint.setStyle(Paint.Style.STROKE);
mProgressPaint.setStrokeCap(Paint.Cap.ROUND);
@@ -92,7 +104,9 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable {
return;
}
- long animationDuration = 150;
+ long animationDuration = mShortAnimationDuration;
+
+ hideEnrollmentHelp();
if (progress == 1.f) {
animationDuration = 400;
@@ -128,6 +142,47 @@ public class UdfpsEnrollProgressBarDrawable extends Drawable {
mLastStepAcquired = true;
}
+ void onEnrollmentHelp() {
+ if (mProgressShowingHelpAnimator != null || mProgressAnimator == null) {
+ return; // already showing or at 0% (no progress bar visible)
+ }
+
+ if (mProgressHidingHelpAnimator != null && mProgressHidingHelpAnimator.isRunning()) {
+ mProgressHidingHelpAnimator.cancel();
+ }
+ mProgressHidingHelpAnimator = null;
+
+ mProgressShowingHelpAnimator = getProgressColorAnimator(
+ mProgressPaint.getColor(), mProgressHelpColor);
+ mProgressShowingHelpAnimator.start();
+ }
+
+ private void hideEnrollmentHelp() {
+ if (mProgressHidingHelpAnimator != null || mProgressShowingHelpAnimator == null) {
+ return; // already hidden or help never shown
+ }
+
+ if (mProgressShowingHelpAnimator != null && mProgressShowingHelpAnimator.isRunning()) {
+ mProgressShowingHelpAnimator.cancel();
+ }
+ mProgressShowingHelpAnimator = null;
+
+ mProgressHidingHelpAnimator = getProgressColorAnimator(
+ mProgressPaint.getColor(), mProgressColor);
+ mProgressHidingHelpAnimator.start();
+ }
+
+ private ValueAnimator getProgressColorAnimator(@ColorInt int from, @ColorInt int to) {
+ final ValueAnimator animator = ValueAnimator.ofObject(
+ ArgbEvaluator.getInstance(), from, to);
+ animator.setDuration(mShortAnimationDuration);
+ animator.addUpdateListener(animation -> {
+ mProgressPaint.setColor((int) animation.getAnimatedValue());
+ mParent.invalidateSelf();
+ });
+ return animator;
+ }
+
@Override
public void draw(@NonNull Canvas canvas) {
canvas.save();
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java
index 2cdf49d6fc3c..56d5b317029f 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java
@@ -64,4 +64,8 @@ public class UdfpsEnrollView extends UdfpsAnimationView {
void onLastStepAcquired() {
mHandler.post(mFingerprintDrawable::onLastStepAcquired);
}
+
+ void onEnrollmentHelp() {
+ mHandler.post(mFingerprintDrawable::onEnrollmentHelp);
+ }
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java
index 3dab010d917c..61534a5a83d1 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java
@@ -42,6 +42,11 @@ public class UdfpsEnrollViewController extends UdfpsAnimationViewController<Udfp
public void onLastStepAcquired() {
mView.onLastStepAcquired();
}
+
+ @Override
+ public void onEnrollmentHelp() {
+ mView.onEnrollmentHelp();
+ }
};
protected UdfpsEnrollViewController(