From: Peter Schiller Date: Wed, 20 Jul 2016 20:58:41 +0000 (-0700) Subject: Caret background protection X-Git-Tag: android-x86-7.1-r1~214 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=03340309e2;p=android-x86%2Fpackages-apps-Launcher3.git Caret background protection Change-Id: I5f902a3977677e7848932a6a60992a62f1638e39 --- diff --git a/res/values/colors.xml b/res/values/colors.xml index 15d4f5292..21d9d5c93 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -37,6 +37,7 @@ #FFFFFFFF #1E000000 #FFFFFFFF + #22000000 #FFF2F2F2 #40FFFFFF diff --git a/res/values/dimens.xml b/res/values/dimens.xml index cbbafac61..54b3d091d 100644 --- a/res/values/dimens.xml +++ b/res/values/dimens.xml @@ -75,6 +75,7 @@ 700dp 475dp 2dp + 1dp 13dp 4dp diff --git a/src/com/android/launcher3/pageindicators/CaretDrawable.java b/src/com/android/launcher3/pageindicators/CaretDrawable.java index e5d128e24..fcf3d23a2 100644 --- a/src/com/android/launcher3/pageindicators/CaretDrawable.java +++ b/src/com/android/launcher3/pageindicators/CaretDrawable.java @@ -34,30 +34,43 @@ public class CaretDrawable extends Drawable { private float mCaretProgress; - private Paint mPaint = new Paint(); + private Paint mShadowPaint = new Paint(); + private Paint mCaretPaint = new Paint(); private Path mPath = new Path(); public CaretDrawable(Context context) { final Resources res = context.getResources(); - mPaint.setColor(res.getColor(R.color.all_apps_caret_color)); - mPaint.setAntiAlias(true); - mPaint.setStrokeWidth(res.getDimensionPixelSize(R.dimen.all_apps_caret_stroke_width)); - mPaint.setStyle(Paint.Style.STROKE); - mPaint.setStrokeCap(Paint.Cap.SQUARE); - mPaint.setStrokeJoin(Paint.Join.MITER); + final int strokeWidth = res.getDimensionPixelSize(R.dimen.all_apps_caret_stroke_width); + final int shadowSpread = res.getDimensionPixelSize(R.dimen.all_apps_caret_shadow_spread); + + mCaretPaint.setColor(res.getColor(R.color.all_apps_caret_color)); + mCaretPaint.setAntiAlias(true); + mCaretPaint.setStrokeWidth(strokeWidth); + mCaretPaint.setStyle(Paint.Style.STROKE); + mCaretPaint.setStrokeCap(Paint.Cap.SQUARE); + mCaretPaint.setStrokeJoin(Paint.Join.MITER); + + mShadowPaint.setColor(res.getColor(R.color.all_apps_caret_shadow_color)); + mShadowPaint.setAntiAlias(true); + mShadowPaint.setStrokeWidth(strokeWidth + (shadowSpread * 2)); + mShadowPaint.setStyle(Paint.Style.STROKE); + mShadowPaint.setStrokeCap(Paint.Cap.ROUND); + mShadowPaint.setStrokeJoin(Paint.Join.ROUND); } @Override public void draw(Canvas canvas) { - if (Float.compare(mPaint.getAlpha(), 0f) == 0) { + // Assumes caret paint is more important than shadow paint + if (Float.compare(mCaretPaint.getAlpha(), 0f) == 0) { return; } - final float width = getBounds().width() - mPaint.getStrokeWidth(); - final float height = getBounds().height() - mPaint.getStrokeWidth(); - final float left = getBounds().left + (mPaint.getStrokeWidth() / 2); - final float top = getBounds().top + (mPaint.getStrokeWidth() / 2); + // Assumes shadow stroke width is larger + final float width = getBounds().width() - mShadowPaint.getStrokeWidth(); + final float height = getBounds().height() - mShadowPaint.getStrokeWidth(); + final float left = getBounds().left + (mShadowPaint.getStrokeWidth() / 2); + final float top = getBounds().top + (mShadowPaint.getStrokeWidth() / 2); final float verticalInset = (height / 4); final float caretHeight = (height - (verticalInset * 2)); @@ -67,7 +80,8 @@ public class CaretDrawable extends Drawable { mPath.lineTo(left + (width / 2), top + caretHeight * mCaretProgress); mPath.lineTo(left + width, top + caretHeight * (1 - mCaretProgress)); - canvas.drawPath(mPath, mPaint); + canvas.drawPath(mPath, mShadowPaint); + canvas.drawPath(mPath, mCaretPaint); } @Override @@ -84,7 +98,8 @@ public class CaretDrawable extends Drawable { @Override public void setAlpha(int alpha) { - mPaint.setAlpha(alpha); + mCaretPaint.setAlpha(alpha); + mShadowPaint.setAlpha(alpha); invalidateSelf(); }