Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 0a989d79 authored by Kevin Chyn's avatar Kevin Chyn Committed by Android (Google) Code Review
Browse files

Merge changes I91d720d3,Ibfdc40d4 into sc-dev

* changes:
  Update Udfps fingerprint icon size
  Add UDFPS enrollment moving target
parents c8f4f70e 9a0d8a6c
Loading
Loading
Loading
Loading
+3 −1
Original line number Diff line number Diff line
@@ -184,6 +184,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_moving_target_stroke">#ff669DF6</color>              <!-- 100% blue -->

    <!-- Logout button -->
    <color name="logout_button_bg_color">#ccffffff</color>
+9 −3
Original line number Diff line number Diff line
@@ -17,6 +17,7 @@
package com.android.systemui.biometrics;

import android.content.Context;
import android.graphics.Rect;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.view.View;
@@ -46,12 +47,17 @@ public abstract class UdfpsAnimation extends Drawable {
    }

    public void onSensorRectUpdated(@NonNull RectF sensorRect) {
        int margin =  (int) (sensorRect.bottom - sensorRect.top) / 5;
        mFingerprintDrawable.setBounds(
                (int) sensorRect.left + margin,
        final int margin =  (int) sensorRect.height() / 8;

        final Rect bounds = new Rect((int) sensorRect.left + margin,
                (int) sensorRect.top + margin,
                (int) sensorRect.right - margin,
                (int) sensorRect.bottom - margin);
        updateFingerprintIconBounds(bounds);
    }

    protected void updateFingerprintIconBounds(@NonNull Rect bounds) {
        mFingerprintDrawable.setBounds(bounds);
    }

    @Override
+51 −6
Original line number Diff line number Diff line
@@ -22,13 +22,14 @@ import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.ColorFilter;
import android.graphics.Paint;
import android.graphics.PointF;
import android.graphics.Rect;
import android.graphics.RectF;
import android.util.Log;
import android.graphics.drawable.Drawable;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;

import com.android.settingslib.Utils;
import com.android.systemui.R;

/**
@@ -40,9 +41,13 @@ public class UdfpsAnimationEnroll extends UdfpsAnimation {
    private static final float SHADOW_RADIUS = 5.f;
    private static final float PROGRESS_BAR_RADIUS = 140.f;

    @Nullable private RectF mSensorRect;
    @NonNull private final Drawable mMovingTargetFpIcon;
    @NonNull private final Paint mSensorPaint;
    private final int mNotificationShadeColor;
    @NonNull private final Paint mBlueFill;
    @NonNull private final Paint mBlueStroke;;

    @Nullable private RectF mSensorRect;
    @Nullable private UdfpsEnrollHelper mEnrollHelper;

    UdfpsAnimationEnroll(@NonNull Context context) {
        super(context);
@@ -53,8 +58,24 @@ public class UdfpsAnimationEnroll extends UdfpsAnimation {
        mSensorPaint.setShadowLayer(SHADOW_RADIUS, 0, 0, Color.BLACK);
        mSensorPaint.setStyle(Paint.Style.FILL);

        mNotificationShadeColor = Utils.getColorAttr(context,
                android.R.attr.colorBackgroundFloating).getDefaultColor();
        mBlueFill = new Paint(0 /* flags */);
        mBlueFill.setAntiAlias(true);
        mBlueFill.setColor(context.getColor(R.color.udfps_moving_target_fill));
        mBlueFill.setStyle(Paint.Style.FILL);

        mBlueStroke = new Paint(0 /* flags */);
        mBlueStroke.setAntiAlias(true);
        mBlueStroke.setColor(context.getColor(R.color.udfps_moving_target_stroke));
        mBlueStroke.setStyle(Paint.Style.STROKE);
        mBlueStroke.setStrokeWidth(12);

        mMovingTargetFpIcon = context.getResources().getDrawable(R.drawable.ic_fingerprint, null);
        mMovingTargetFpIcon.setTint(Color.WHITE);
        mMovingTargetFpIcon.mutate();
    }

    void setEnrollHelper(@NonNull UdfpsEnrollHelper helper) {
        mEnrollHelper = helper;
    }

    @Override
@@ -73,6 +94,12 @@ public class UdfpsAnimationEnroll extends UdfpsAnimation {
        mSensorRect = sensorRect;
    }

    @Override
    protected void updateFingerprintIconBounds(@NonNull Rect bounds) {
        super.updateFingerprintIconBounds(bounds);
        mMovingTargetFpIcon.setBounds(bounds);
    }

    @Override
    public void draw(@NonNull Canvas canvas) {
        if (isIlluminationShowing()) {
@@ -87,6 +114,24 @@ public class UdfpsAnimationEnroll extends UdfpsAnimation {
            }
        }
        mFingerprintDrawable.draw(canvas);

        // Draw moving target
        if (mEnrollHelper.isCenterEnrollmentComplete()) {
            mFingerprintDrawable.setAlpha(64);

            canvas.save();
            final PointF point = mEnrollHelper.getNextGuidedEnrollmentPoint();
            canvas.translate(point.x, point.y);
            if (mSensorRect != null) {
                canvas.drawOval(mSensorRect, mBlueFill);
                canvas.drawOval(mSensorRect, mBlueStroke);
            }

            mMovingTargetFpIcon.draw(canvas);
            canvas.restore();
        } else {
            mFingerprintDrawable.setAlpha(255);
        }
    }

    @Override
+11 −0
Original line number Diff line number Diff line
@@ -20,6 +20,7 @@ import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.graphics.Canvas;
import android.graphics.PointF;
import android.graphics.RectF;
import android.util.AttributeSet;
import android.widget.FrameLayout;
@@ -142,4 +143,14 @@ public abstract class UdfpsAnimationView extends FrameLayout implements DozeRece
        }
        return getUdfpsAnimation().getPaddingY();
    }

    /**
     * @return the amount of translation needed if the view currently requires the user to touch
     *         somewhere other than the exact center of the sensor. For example, this can happen
     *         during guided enrollment.
     */
    @NonNull
    PointF getTouchTranslation() {
        return new PointF(0, 0);
    }
}
+13 −1
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ package com.android.systemui.biometrics;
import android.annotation.NonNull;
import android.annotation.Nullable;
import android.content.Context;
import android.graphics.PointF;
import android.util.AttributeSet;
import android.util.Log;
import android.view.View;
@@ -33,7 +34,7 @@ public class UdfpsAnimationViewEnroll extends UdfpsAnimationView

    private static final String TAG = "UdfpsAnimationViewEnroll";

    @NonNull private UdfpsAnimation mUdfpsAnimation;
    @NonNull private UdfpsAnimationEnroll mUdfpsAnimation;
    @NonNull private UdfpsProgressBar mProgressBar;
    @Nullable private UdfpsEnrollHelper mEnrollHelper;

@@ -50,6 +51,7 @@ public class UdfpsAnimationViewEnroll extends UdfpsAnimationView

    public void setEnrollHelper(@NonNull UdfpsEnrollHelper helper) {
        mEnrollHelper = helper;
        mUdfpsAnimation.setEnrollHelper(helper);
    }

    @Override
@@ -81,4 +83,14 @@ public class UdfpsAnimationViewEnroll extends UdfpsAnimationView

        mProgressBar.setProgress(interpolatedProgress, true);
    }

    @NonNull
    @Override
    PointF getTouchTranslation() {
        if (!mEnrollHelper.isCenterEnrollmentComplete()) {
            return new PointF(0, 0);
        } else {
            return mEnrollHelper.getNextGuidedEnrollmentPoint();
        }
    }
}
Loading