udfps: Make pressed udfp view configurable

 * set a solid color by configuring config_udfpsColor
 * set a custom image by setting udfps_icon_pressed and making
   config_udfpsColor #00ffffff (transparent)

Change-Id: I028e0ba6ee012dc84cd365078ef4cbfbaad5cedc
diff --git a/packages/SystemUI/res/drawable-nodpi/udfps_icon_pressed.png b/packages/SystemUI/res/drawable-nodpi/udfps_icon_pressed.png
new file mode 100644
index 0000000..4102e28
--- /dev/null
+++ b/packages/SystemUI/res/drawable-nodpi/udfps_icon_pressed.png
Binary files differ
diff --git a/packages/SystemUI/res/values/leaf_config.xml b/packages/SystemUI/res/values/leaf_config.xml
index dcc5833..243861a 100644
--- a/packages/SystemUI/res/values/leaf_config.xml
+++ b/packages/SystemUI/res/values/leaf_config.xml
@@ -12,4 +12,7 @@
     <integer name="qs_panel_num_columns">2</integer>
     <integer name="qs_panel_num_columns_landscape">4</integer>
     <integer name="qs_panel_num_columns_media">2</integer>
+
+    <!-- Color of the UDFPS pressed view -->
+    <color name="config_udfpsColor">#ffffffff</color>
 </resources>
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java
index f5ada94..2488132 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/UdfpsSurfaceView.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
+import android.graphics.drawable.Drawable;
 import android.graphics.Canvas;
 import android.graphics.Paint;
 import android.graphics.PixelFormat;
@@ -29,6 +30,8 @@
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 
+import com.android.systemui.R;
+
 /**
  * Surface View for providing the Global High-Brightness Mode (GHBM) illumination for UDFPS.
  */
@@ -54,6 +57,8 @@
     boolean mAwaitingSurfaceToStartIllumination;
     boolean mHasValidSurface;
 
+    private Drawable mUdfpsIconPressed;
+
     public UdfpsSurfaceView(Context context, AttributeSet attrs) {
         super(context, attrs);
 
@@ -69,8 +74,10 @@
 
         mSensorPaint = new Paint(0 /* flags */);
         mSensorPaint.setAntiAlias(true);
-        mSensorPaint.setARGB(255, 255, 255, 255);
+        mSensorPaint.setColor(context.getColor(R.color.config_udfpsColor));
         mSensorPaint.setStyle(Paint.Style.FILL);
+
+        mUdfpsIconPressed = context.getDrawable(R.drawable.udfps_icon_pressed);
     }
 
     @Override public void surfaceCreated(SurfaceHolder holder) {
@@ -134,6 +141,13 @@
         Canvas canvas = null;
         try {
             canvas = mHolder.lockCanvas();
+            mUdfpsIconPressed.setBounds(
+                    Math.round(sensorRect.left),
+                    Math.round(sensorRect.top),
+                    Math.round(sensorRect.right),
+                    Math.round(sensorRect.bottom)
+            );
+            mUdfpsIconPressed.draw(canvas);
             canvas.drawOval(sensorRect, mSensorPaint);
         } finally {
             // Make sure the surface is never left in a bad state.