summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--packages/SystemUI/res/drawable/udfps_progress_bar.xml44
-rw-r--r--packages/SystemUI/res/layout/udfps_enroll_view.xml11
-rw-r--r--packages/SystemUI/res/values/colors.xml1
-rw-r--r--packages/SystemUI/res/values/config.xml5
-rw-r--r--packages/SystemUI/res/values/dimens.xml3
-rw-r--r--packages/SystemUI/res/values/styles.xml8
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java84
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java150
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java13
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java27
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/UdfpsProgressBar.java59
-rw-r--r--packages/SystemUI/src/com/android/systemui/biometrics/Utils.java11
12 files changed, 226 insertions, 190 deletions
diff --git a/packages/SystemUI/res/drawable/udfps_progress_bar.xml b/packages/SystemUI/res/drawable/udfps_progress_bar.xml
deleted file mode 100644
index e5389f3b99ef..000000000000
--- a/packages/SystemUI/res/drawable/udfps_progress_bar.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- ~ Copyright (C) 2021 The Android Open Source Project
- ~
- ~ Licensed under the Apache License, Version 2.0 (the "License");
- ~ you may not use this file except in compliance with the License.
- ~ You may obtain a copy of the License at
- ~
- ~ http://www.apache.org/licenses/LICENSE-2.0
- ~
- ~ Unless required by applicable law or agreed to in writing, software
- ~ distributed under the License is distributed on an "AS IS" BASIS,
- ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- ~ See the License for the specific language governing permissions and
- ~ limitations under the License.
- -->
-
-<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
- <item android:id="@android:id/background">
- <shape
- android:innerRadiusRatio="2.2"
- android:shape="ring"
- android:thickness="@dimen/udfps_enroll_progress_thickness"
- android:useLevel="false"
- android:tint="?android:colorControlNormal">
- <solid android:color="@*android:color/white_disabled_material" />
- </shape>
- </item>
- <item android:id="@android:id/progress">
- <rotate
- android:fromDegrees="270"
- android:pivotX="50%"
- android:pivotY="50%"
- android:toDegrees="270">
- <shape
- android:innerRadiusRatio="2.2"
- android:shape="ring"
- android:thickness="@dimen/udfps_enroll_progress_thickness"
- android:tint="?android:attr/colorControlActivated">
- <solid android:color="@android:color/white" />
- </shape>
- </rotate>
- </item>
-</layer-list> \ No newline at end of file
diff --git a/packages/SystemUI/res/layout/udfps_enroll_view.xml b/packages/SystemUI/res/layout/udfps_enroll_view.xml
index 40353052ca85..a55653e5485f 100644
--- a/packages/SystemUI/res/layout/udfps_enroll_view.xml
+++ b/packages/SystemUI/res/layout/udfps_enroll_view.xml
@@ -20,17 +20,6 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
- <!-- Enrollment progress bar -->
- <com.android.systemui.biometrics.UdfpsProgressBar
- android:id="@+id/progress_bar"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:max="100"
- android:padding="@dimen/udfps_enroll_progress_thickness"
- android:progress="0"
- android:layout_gravity="center"
- android:visibility="gone"/>
-
<!-- Fingerprint -->
<ImageView
android:id="@+id/udfps_enroll_animation_fp_view"
diff --git a/packages/SystemUI/res/values/colors.xml b/packages/SystemUI/res/values/colors.xml
index 862d59e970a1..1f6a94d254b7 100644
--- a/packages/SystemUI/res/values/colors.xml
+++ b/packages/SystemUI/res/values/colors.xml
@@ -188,6 +188,7 @@
<color name="udfps_enroll_icon">#000000</color> <!-- 100% black -->
<color name="udfps_moving_target_fill">#cc4285f4</color> <!-- 80% blue -->
<color name="udfps_moving_target_stroke">#ff669DF6</color> <!-- 100% blue -->
+ <color name="udfps_enroll_progress">#ff669DF6</color> <!-- 100% blue -->
<!-- Logout button -->
<color name="logout_button_bg_color">#ccffffff</color>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 119507b67e9a..34a145229580 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -630,6 +630,11 @@
58.0001 29.2229,56.9551 26.8945,55.195
</string>
+ <!-- The radius of the enrollment progress bar, in pixels -->
+ <integer name="config_udfpsEnrollProgressBar" translatable="false">
+ 360
+ </integer>
+
<!-- package name of a built-in camera app to use to restrict implicit intent resolution
when the double-press power gesture is used. Ignored if empty. -->
<string translatable="false" name="config_cameraGesturePackage"></string>
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index c1efc1fc247b..f7f7476c591b 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -1188,9 +1188,6 @@
<!-- Y translation for credential contents when animating in -->
<dimen name="biometric_dialog_credential_translation_offset">60dp</dimen>
- <!-- UDFPS enrollment progress bar thickness -->
- <dimen name="udfps_enroll_progress_thickness">12dp</dimen>
-
<!-- Wireless Charging Animation values -->
<dimen name="wireless_charging_dots_radius_start">0dp</dimen>
<dimen name="wireless_charging_dots_radius_end">4dp</dimen>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 46511682464b..97273a88e9c0 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -871,14 +871,6 @@
<item name="android:textColor">?android:attr/textColorPrimary</item>
</style>
- <style name="UdfpsProgressBarStyle"
- parent="android:style/Widget.Material.ProgressBar.Horizontal">
- <item name="android:indeterminate">false</item>
- <item name="android:max">10000</item>
- <item name="android:mirrorForRtl">false</item>
- <item name="android:progressDrawable">@drawable/udfps_progress_bar</item>
- </style>
-
<!-- Wallet styles -->
<style name="Wallet" />
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java
index 83ae865d7427..6b6e0f19d7fb 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollDrawable.java
@@ -26,8 +26,6 @@ import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
-import android.os.Handler;
-import android.os.Looper;
import android.view.animation.AccelerateDecelerateInterpolator;
import androidx.annotation.NonNull;
@@ -41,17 +39,15 @@ import com.android.systemui.R;
public class UdfpsEnrollDrawable extends UdfpsDrawable {
private static final String TAG = "UdfpsAnimationEnroll";
- static final float PROGRESS_BAR_RADIUS = 360.f;
-
private static final long ANIM_DURATION = 800;
// 1 + SCALE_MAX is the maximum that the moving target will animate to
private static final float SCALE_MAX = 0.25f;
+ @NonNull private final UdfpsEnrollProgressBarDrawable mProgressDrawable;
@NonNull private final Drawable mMovingTargetFpIcon;
@NonNull private final Paint mSensorOutlinePaint;
@NonNull private final Paint mBlueFill;
@NonNull private final Paint mBlueStroke;
- @NonNull private final Handler mHandler;
@Nullable private RectF mSensorRect;
@Nullable private UdfpsEnrollHelper mEnrollHelper;
@@ -64,11 +60,10 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable {
// Moving target size
float mCurrentScale = 1.f;
-
UdfpsEnrollDrawable(@NonNull Context context) {
super(context);
- mHandler = new Handler(Looper.getMainLooper());
+ mProgressDrawable = new UdfpsEnrollProgressBarDrawable(context, this);
mSensorOutlinePaint = new Paint(0 /* flags */);
mSensorOutlinePaint.setAntiAlias(true);
@@ -112,47 +107,49 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable {
}
void onEnrollmentProgress(int remaining, int totalSteps) {
+ mProgressDrawable.setEnrollmentProgress(remaining, totalSteps);
+
if (mEnrollHelper.isCenterEnrollmentComplete()) {
- mHandler.post(() -> {
- if (mAnimatorSet != null && mAnimatorSet.isRunning()) {
- mAnimatorSet.end();
- }
-
- final PointF point = mEnrollHelper.getNextGuidedEnrollmentPoint();
-
- final ValueAnimator x = ValueAnimator.ofFloat(mCurrentX, point.x);
- x.addUpdateListener(animation -> {
- mCurrentX = (float) animation.getAnimatedValue();
- invalidateSelf();
- });
-
- final ValueAnimator y = ValueAnimator.ofFloat(mCurrentY, point.y);
- y.addUpdateListener(animation -> {
- mCurrentY = (float) animation.getAnimatedValue();
- invalidateSelf();
- });
-
- final ValueAnimator scale = ValueAnimator.ofFloat(0, (float) Math.PI);
- scale.setDuration(ANIM_DURATION);
- scale.addUpdateListener(animation -> {
- // Grow then shrink
- mCurrentScale = 1 +
- SCALE_MAX * (float) Math.sin((float) animation.getAnimatedValue());
- invalidateSelf();
- });
-
- mAnimatorSet = new AnimatorSet();
-
- mAnimatorSet.setInterpolator(new AccelerateDecelerateInterpolator());
- mAnimatorSet.setDuration(ANIM_DURATION);
- mAnimatorSet.playTogether(x, y, scale);
- mAnimatorSet.start();
+ if (mAnimatorSet != null && mAnimatorSet.isRunning()) {
+ mAnimatorSet.end();
+ }
+
+ final PointF point = mEnrollHelper.getNextGuidedEnrollmentPoint();
+
+ final ValueAnimator x = ValueAnimator.ofFloat(mCurrentX, point.x);
+ x.addUpdateListener(animation -> {
+ mCurrentX = (float) animation.getAnimatedValue();
+ invalidateSelf();
+ });
+
+ final ValueAnimator y = ValueAnimator.ofFloat(mCurrentY, point.y);
+ y.addUpdateListener(animation -> {
+ mCurrentY = (float) animation.getAnimatedValue();
+ invalidateSelf();
});
+
+ final ValueAnimator scale = ValueAnimator.ofFloat(0, (float) Math.PI);
+ scale.setDuration(ANIM_DURATION);
+ scale.addUpdateListener(animation -> {
+ // Grow then shrink
+ mCurrentScale = 1 +
+ SCALE_MAX * (float) Math.sin((float) animation.getAnimatedValue());
+ invalidateSelf();
+ });
+
+ mAnimatorSet = new AnimatorSet();
+
+ mAnimatorSet.setInterpolator(new AccelerateDecelerateInterpolator());
+ mAnimatorSet.setDuration(ANIM_DURATION);
+ mAnimatorSet.playTogether(x, y, scale);
+ mAnimatorSet.start();
}
}
@Override
public void draw(@NonNull Canvas canvas) {
+ mProgressDrawable.draw(canvas);
+
if (isIlluminationShowing()) {
return;
}
@@ -182,6 +179,11 @@ public class UdfpsEnrollDrawable extends UdfpsDrawable {
}
@Override
+ public void onBoundsChange(@NonNull Rect rect) {
+ mProgressDrawable.setBounds(rect);
+ }
+
+ @Override
public void setAlpha(int alpha) {
super.setAlpha(alpha);
mSensorOutlinePaint.setAlpha(alpha);
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java
new file mode 100644
index 000000000000..5c9e52f86471
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollProgressBarDrawable.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2021 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.systemui.biometrics;
+
+import android.animation.ValueAnimator;
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.ColorFilter;
+import android.graphics.Paint;
+import android.graphics.drawable.Drawable;
+import android.util.TypedValue;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import com.android.systemui.R;
+
+/**
+ * UDFPS enrollment progress bar.
+ */
+public class UdfpsEnrollProgressBarDrawable extends Drawable {
+
+ private static final String TAG = "UdfpsEnrollProgressBarDrawable";
+
+ private static final float PROGRESS_BAR_THICKNESS_DP = 12;
+
+ @NonNull private final Context mContext;
+ @NonNull private final UdfpsEnrollDrawable mParent;
+ @NonNull private final Paint mBackgroundCirclePaint;
+ @NonNull private final Paint mProgressPaint;
+
+ @Nullable private ValueAnimator mProgressAnimator;
+ private float mProgress;
+
+ public UdfpsEnrollProgressBarDrawable(@NonNull Context context,
+ @NonNull UdfpsEnrollDrawable parent) {
+ mContext = context;
+ mParent = parent;
+
+ mBackgroundCirclePaint = new Paint();
+ mBackgroundCirclePaint.setStrokeWidth(Utils.dpToPixels(context, PROGRESS_BAR_THICKNESS_DP));
+ mBackgroundCirclePaint.setColor(context.getColor(R.color.white_disabled));
+ mBackgroundCirclePaint.setAntiAlias(true);
+ mBackgroundCirclePaint.setStyle(Paint.Style.STROKE);
+
+ // Background circle color + alpha
+ TypedArray tc = context.obtainStyledAttributes(
+ new int[] {android.R.attr.colorControlNormal});
+ int tintColor = tc.getColor(0, mBackgroundCirclePaint.getColor());
+ mBackgroundCirclePaint.setColor(tintColor);
+ tc.recycle();
+ TypedValue alpha = new TypedValue();
+ context.getTheme().resolveAttribute(android.R.attr.disabledAlpha, alpha, true);
+ mBackgroundCirclePaint.setAlpha((int) (alpha.getFloat() * 255));
+
+ // 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.setAntiAlias(true);
+ mProgressPaint.setStyle(Paint.Style.STROKE);
+ mProgressPaint.setStrokeCap(Paint.Cap.ROUND);
+ }
+
+ void setEnrollmentProgress(int remaining, int totalSteps) {
+ // Add one so that the first steps actually changes progress, but also so that the last
+ // step ends at 1.0
+ final float progress = (totalSteps - remaining + 1) / (float) (totalSteps + 1);
+
+ if (mProgressAnimator != null && mProgressAnimator.isRunning()) {
+ mProgressAnimator.cancel();
+ }
+
+ mProgressAnimator = ValueAnimator.ofFloat(mProgress, progress);
+ mProgressAnimator.setDuration(150);
+ mProgressAnimator.addUpdateListener(animation -> {
+ mProgress = (float) animation.getAnimatedValue();
+ // Use the parent to invalidate, since it's the one that's attached as the view's
+ // drawable and has its callback set automatically. Invalidating via
+ // `this.invalidateSelf` actually does not invoke draw(), since this drawable's callback
+ // is not really set.
+ mParent.invalidateSelf();
+ });
+ mProgressAnimator.start();
+ }
+
+ @Override
+ public void draw(@NonNull Canvas canvas) {
+ canvas.save();
+
+ // Progress starts from the top, instead of the right
+ canvas.rotate(-90, getBounds().centerX(), getBounds().centerY());
+
+ // Progress bar "background track"
+ final float halfPaddingPx = Utils.dpToPixels(mContext, PROGRESS_BAR_THICKNESS_DP) / 2;
+ canvas.drawArc(halfPaddingPx,
+ halfPaddingPx,
+ getBounds().right - halfPaddingPx,
+ getBounds().bottom - halfPaddingPx,
+ 0,
+ 360,
+ false,
+ mBackgroundCirclePaint
+ );
+
+ final float progress = 360.f * mProgress;
+ // Progress
+ canvas.drawArc(halfPaddingPx,
+ halfPaddingPx,
+ getBounds().right - halfPaddingPx,
+ getBounds().bottom - halfPaddingPx,
+ 0,
+ progress,
+ false,
+ mProgressPaint
+ );
+
+ canvas.restore();
+ }
+
+ @Override
+ public void setAlpha(int alpha) {
+
+ }
+
+ @Override
+ public void setColorFilter(@Nullable ColorFilter colorFilter) {
+
+ }
+
+ @Override
+ public int getOpacity() {
+ return 0;
+ }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java
index 3bf1864aca4c..3b3022045849 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollView.java
@@ -17,6 +17,8 @@
package com.android.systemui.biometrics;
import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
import android.util.AttributeSet;
import android.widget.ImageView;
@@ -30,26 +32,25 @@ import com.android.systemui.R;
*/
public class UdfpsEnrollView extends UdfpsAnimationView {
@NonNull private final UdfpsEnrollDrawable mFingerprintDrawable;
+ @NonNull private final Handler mHandler;
+
@NonNull private ImageView mFingerprintView;
- @NonNull private UdfpsProgressBar mProgressBar;
public UdfpsEnrollView(Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
mFingerprintDrawable = new UdfpsEnrollDrawable(mContext);
+ mHandler = new Handler(Looper.getMainLooper());
}
@Override
protected void updateAlpha() {
super.updateAlpha();
- mProgressBar.setAlpha(calculateAlpha());
- mProgressBar.getProgressDrawable().setAlpha(calculateAlpha());
}
@Override
protected void onFinishInflate() {
mFingerprintView = findViewById(R.id.udfps_enroll_animation_fp_view);
mFingerprintView.setImageDrawable(mFingerprintDrawable);
- mProgressBar = findViewById(R.id.progress_bar);
}
@Override
@@ -62,6 +63,8 @@ public class UdfpsEnrollView extends UdfpsAnimationView {
}
void onEnrollmentProgress(int remaining, int totalSteps) {
- mFingerprintDrawable.onEnrollmentProgress(remaining, totalSteps);
+ mHandler.post(() -> {
+ mFingerprintDrawable.onEnrollmentProgress(remaining, totalSteps);
+ });
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java
index c1f3fe0ffbfd..953448d93d6a 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsEnrollViewController.java
@@ -18,7 +18,6 @@ package com.android.systemui.biometrics;
import android.annotation.NonNull;
import android.graphics.PointF;
-import android.view.View;
import com.android.systemui.R;
import com.android.systemui.dump.DumpManager;
@@ -29,8 +28,11 @@ import com.android.systemui.statusbar.phone.StatusBar;
* Class that coordinates non-HBM animations during enrollment.
*/
public class UdfpsEnrollViewController extends UdfpsAnimationViewController<UdfpsEnrollView> {
- @NonNull private final UdfpsProgressBar mProgressBar;
+
+ private final int mEnrollProgressBarRadius;
@NonNull private final UdfpsEnrollHelper mEnrollHelper;
+ @NonNull private final UdfpsEnrollHelper.Listener mEnrollHelperListener =
+ mView::onEnrollmentProgress;
protected UdfpsEnrollViewController(
@NonNull UdfpsEnrollView view,
@@ -39,8 +41,9 @@ public class UdfpsEnrollViewController extends UdfpsAnimationViewController<Udfp
@NonNull StatusBar statusBar,
@NonNull DumpManager dumpManager) {
super(view, statusBarStateController, statusBar, dumpManager);
+ mEnrollProgressBarRadius = getContext().getResources()
+ .getInteger(R.integer.config_udfpsEnrollProgressBar);
mEnrollHelper = enrollHelper;
- mProgressBar = mView.findViewById(R.id.progress_bar);
mView.setEnrollHelper(mEnrollHelper);
}
@@ -53,8 +56,6 @@ public class UdfpsEnrollViewController extends UdfpsAnimationViewController<Udfp
protected void onViewAttached() {
super.onViewAttached();
if (mEnrollHelper.shouldShowProgressBar()) {
- mProgressBar.setVisibility(View.VISIBLE);
-
// Only need enrollment updates if the progress bar is showing :)
mEnrollHelper.setListener(mEnrollHelperListener);
}
@@ -78,23 +79,11 @@ public class UdfpsEnrollViewController extends UdfpsAnimationViewController<Udfp
@Override
public int getPaddingX() {
- return (int) Math.ceil(UdfpsEnrollDrawable.PROGRESS_BAR_RADIUS);
+ return mEnrollProgressBarRadius;
}
@Override
public int getPaddingY() {
- return (int) Math.ceil(UdfpsEnrollDrawable.PROGRESS_BAR_RADIUS);
+ return mEnrollProgressBarRadius;
}
-
- private final UdfpsEnrollHelper.Listener mEnrollHelperListener =
- new UdfpsEnrollHelper.Listener() {
- @Override
- public void onEnrollmentProgress(int remaining, int totalSteps) {
- final int interpolatedProgress = mProgressBar.getMax()
- * Math.max(0, totalSteps + 1 - remaining) / (totalSteps + 1);
-
- mProgressBar.setProgress(interpolatedProgress, true);
- mView.onEnrollmentProgress(remaining, totalSteps);
- }
- };
}
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsProgressBar.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsProgressBar.java
deleted file mode 100644
index 84e2fab7bf6b..000000000000
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsProgressBar.java
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2021 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.systemui.biometrics;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.widget.ProgressBar;
-
-import com.android.systemui.R;
-
-/**
- * A (determinate) progress bar in the form of a ring. The progress bar goes clockwise starting
- * from the 12 o'clock position. This view maintain equal width and height using a strategy similar
- * to "centerInside" for ImageView.
- */
-public class UdfpsProgressBar extends ProgressBar {
-
- public UdfpsProgressBar(Context context) {
- this(context, null);
- }
-
- public UdfpsProgressBar(Context context, AttributeSet attrs) {
- this(context, attrs, 0);
- }
-
- public UdfpsProgressBar(Context context, AttributeSet attrs, int defStyleAttr) {
- this(context, attrs, defStyleAttr, R.style.UdfpsProgressBarStyle);
- }
-
- public UdfpsProgressBar(Context context, AttributeSet attrs, int defStyleAttr,
- int defStyleRes) {
- super(context, attrs, defStyleAttr, defStyleRes);
- }
-
- @Override
- protected synchronized void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
-
- final int measuredHeight = getMeasuredHeight();
- final int measuredWidth = getMeasuredWidth();
-
- final int length = Math.min(measuredHeight, measuredWidth);
- setMeasuredDimension(length, length);
- }
-} \ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java b/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java
index 4d4e4dd0ad06..322584c4aa69 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/Utils.java
@@ -29,6 +29,7 @@ import android.content.pm.PackageManager;
import android.hardware.biometrics.PromptInfo;
import android.hardware.biometrics.SensorPropertiesInternal;
import android.os.UserManager;
+import android.util.DisplayMetrics;
import android.view.ViewGroup;
import android.view.accessibility.AccessibilityEvent;
import android.view.accessibility.AccessibilityManager;
@@ -49,6 +50,16 @@ public class Utils {
@IntDef({CREDENTIAL_PIN, CREDENTIAL_PATTERN, CREDENTIAL_PASSWORD})
@interface CredentialType {}
+ static float dpToPixels(Context context, float dp) {
+ return dp * ((float) context.getResources().getDisplayMetrics().densityDpi
+ / DisplayMetrics.DENSITY_DEFAULT);
+ }
+
+ static float pixelsToDp(Context context, float pixels) {
+ return pixels / ((float) context.getResources().getDisplayMetrics().densityDpi
+ / DisplayMetrics.DENSITY_DEFAULT);
+ }
+
static void notifyAccessibilityContentChanged(AccessibilityManager am, ViewGroup view) {
if (!am.isEnabled()) {
return;