diff options
-rw-r--r-- | src/com/android/launcher3/graphics/LauncherIcons.java | 14 | ||||
-rw-r--r-- | src_config/com/android/launcher3/config/FeatureFlags.java | 2 |
2 files changed, 14 insertions, 2 deletions
diff --git a/src/com/android/launcher3/graphics/LauncherIcons.java b/src/com/android/launcher3/graphics/LauncherIcons.java index 1a50dfe14..5db395be6 100644 --- a/src/com/android/launcher3/graphics/LauncherIcons.java +++ b/src/com/android/launcher3/graphics/LauncherIcons.java @@ -201,7 +201,7 @@ public class LauncherIcons { int textureWidth = iconBitmapSize; int textureHeight = iconBitmapSize; - final Bitmap bitmap = Bitmap.createBitmap(textureWidth, textureHeight, + Bitmap bitmap = Bitmap.createBitmap(textureWidth, textureHeight, Bitmap.Config.ARGB_8888); final Canvas canvas = sCanvas; canvas.setBitmap(bitmap); @@ -218,6 +218,16 @@ public class LauncherIcons { icon.setBounds(sOldBounds); canvas.setBitmap(null); + if (FeatureFlags.ADAPTIVE_ICON_SHADOW && Utilities.isAtLeastO()) { + try { + Class clazz = Class.forName("android.graphics.drawable.AdaptiveIconDrawable"); + if (clazz.isAssignableFrom(icon.getClass())) { + bitmap = ShadowGenerator.getInstance(context).recreateIcon(bitmap); + } + } catch (Exception e) { + // do nothing + } + } return bitmap; } } @@ -233,7 +243,7 @@ public class LauncherIcons { } try { - Class clazz = Class.forName("android.graphics.drawable.MaskableIconDrawable"); + Class clazz = Class.forName("android.graphics.drawable.AdaptiveIconDrawable"); if (!clazz.isAssignableFrom(drawable.getClass())) { Drawable maskWrapper = context.getDrawable(R.drawable.mask_drawable_wrapper).mutate(); diff --git a/src_config/com/android/launcher3/config/FeatureFlags.java b/src_config/com/android/launcher3/config/FeatureFlags.java index 7459c0c77..ab2e7180f 100644 --- a/src_config/com/android/launcher3/config/FeatureFlags.java +++ b/src_config/com/android/launcher3/config/FeatureFlags.java @@ -44,4 +44,6 @@ public final class FeatureFlags { public static final boolean BADGE_ICONS = true; // When enabled, icons not supporting {@link MaskableIconDrawable} will be wrapped in this class. public static final boolean LEGACY_ICON_TREATMENT = false; + // When enabled, adaptive icons would have shadows baked when being stored to icon cache. + public static final boolean ADAPTIVE_ICON_SHADOW = true; } |