From c445bbf3eb07ab0282ef94cf666545a9f683b18d Mon Sep 17 00:00:00 2001 From: James O'Leary Date: Mon, 12 Aug 2019 11:29:40 -0400 Subject: [PATCH] Add shadow to assistant handles Test: As nav bar color changes, verify shadow appears when assistant handles are white, and shadow disappears as assistant handles change to dark. Handles become dark in light apps (ex. Gmail), and light in dark apps. (ex. YouTube Music) Bug: 134128794 Change-Id: Iaed844de99ff9465c0ac09a78238d8d08060c7a3 --- .../com/android/systemui/CornerHandleView.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/packages/SystemUI/src/com/android/systemui/CornerHandleView.java b/packages/SystemUI/src/com/android/systemui/CornerHandleView.java index a94952c5bc19f..6209c2c362063 100644 --- a/packages/SystemUI/src/com/android/systemui/CornerHandleView.java +++ b/packages/SystemUI/src/com/android/systemui/CornerHandleView.java @@ -19,6 +19,7 @@ package com.android.systemui; import android.animation.ArgbEvaluator; import android.content.Context; import android.graphics.Canvas; +import android.graphics.Color; import android.graphics.Paint; import android.graphics.Path; import android.graphics.RectF; @@ -27,6 +28,7 @@ import android.util.DisplayMetrics; import android.view.ContextThemeWrapper; import android.view.View; +import com.android.internal.graphics.ColorUtils; import com.android.settingslib.Utils; /** @@ -107,6 +109,7 @@ public class CornerHandleView extends View { mPaint.setColor((int) ArgbEvaluator.getInstance().evaluate(darkIntensity, mLightColor, mDarkColor)); + updateShadow(); if (getVisibility() == VISIBLE) { invalidate(); } @@ -118,6 +121,21 @@ public class CornerHandleView extends View { canvas.drawPath(mPath, mPaint); } + private void updateShadow() { + if (ColorUtils.calculateLuminance(mPaint.getColor()) > 0.7f) { + mPaint.setShadowLayer(/** radius */ 5,/** shadowDx */ 0, /** shadowDy */ -1, + /** color */ ColorUtils.setAlphaComponent(/** color */ Color.BLACK, + /** alpha */ 102)); + } else { + mPaint.setShadowLayer(/** radius */ 0, /** shadowDx */ 0, /** shadowDy */ 0, + /** color */ Color.TRANSPARENT); + } + + if (getVisibility() == VISIBLE) { + invalidate(); + } + } + private static float convertDpToPixel(float dp, Context context) { return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT);