From c06745b3d39c236fdbcb7847d7bf42c31e43dcdb Mon Sep 17 00:00:00 2001 From: Hugh Chen Date: Mon, 15 Jun 2020 15:56:02 +0800 Subject: [PATCH] Fix advanced icon will incorrect on some device Use the fixed value to locate the center of icon instead of use value of density. Because the value of density will different between the device according the resolution. Bug: 156689249 Test: build pass Change-Id: I6d3a53e68058232871dd281ec4736179090a6580 --- .../widget/AdaptiveOutlineDrawable.java | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/packages/SettingsLib/AdaptiveIcon/src/com/android/settingslib/widget/AdaptiveOutlineDrawable.java b/packages/SettingsLib/AdaptiveIcon/src/com/android/settingslib/widget/AdaptiveOutlineDrawable.java index 3bf43dd4d1bf1..3565b0e3a9ae2 100644 --- a/packages/SettingsLib/AdaptiveIcon/src/com/android/settingslib/widget/AdaptiveOutlineDrawable.java +++ b/packages/SettingsLib/AdaptiveIcon/src/com/android/settingslib/widget/AdaptiveOutlineDrawable.java @@ -30,9 +30,7 @@ import android.graphics.Rect; import android.graphics.drawable.AdaptiveIconDrawable; import android.graphics.drawable.DrawableWrapper; import android.os.RemoteException; -import android.util.DisplayMetrics; import android.util.PathParser; -import android.view.Display; import android.view.IWindowManager; import android.view.WindowManagerGlobal; @@ -47,6 +45,9 @@ import java.lang.annotation.RetentionPolicy; */ public class AdaptiveOutlineDrawable extends DrawableWrapper { + private static final float ADVANCED_ICON_CENTER = 50f; + private static final float ADVANCED_ICON_RADIUS = 48f; + @Retention(RetentionPolicy.SOURCE) @IntDef({TYPE_DEFAULT, TYPE_ADVANCED}) public @interface AdaptiveOutlineIconType { @@ -61,7 +62,6 @@ public class AdaptiveOutlineDrawable extends DrawableWrapper { private int mStrokeWidth; private Bitmap mBitmap; private int mType; - private float mDensity; public AdaptiveOutlineDrawable(Resources resources, Bitmap bitmap) { super(new AdaptiveIconShapeDrawable(resources)); @@ -83,7 +83,6 @@ public class AdaptiveOutlineDrawable extends DrawableWrapper { mPath = new Path(PathParser.createPathFromPathData( resources.getString(com.android.internal.R.string.config_icon_mask))); mStrokeWidth = resources.getDimensionPixelSize(R.dimen.adaptive_outline_stroke); - mDensity = resources.getDisplayMetrics().density; mOutlinePaint = new Paint(); mOutlinePaint.setColor(getColor(resources, type)); mOutlinePaint.setStyle(Paint.Style.STROKE); @@ -137,12 +136,7 @@ public class AdaptiveOutlineDrawable extends DrawableWrapper { if (mType == TYPE_DEFAULT) { canvas.drawPath(mPath, mOutlinePaint); } else { - final float defaultDensity = getDefaultDisplayDensity(Display.DEFAULT_DISPLAY) - / (float) DisplayMetrics.DENSITY_DEFAULT; - final int insetPx = - Math.round(mInsetPx / (float) (Math.floor( - (mDensity / defaultDensity) * 100) / 100.0)); - canvas.drawCircle(2 * insetPx, 2 * insetPx, 2 * insetPx - mStrokeWidth, + canvas.drawCircle(ADVANCED_ICON_CENTER, ADVANCED_ICON_CENTER, ADVANCED_ICON_RADIUS, mOutlinePaint); } canvas.restoreToCount(count);