summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSunny Goyal <sunnygoyal@google.com>2022-03-01 19:40:46 +0000
committerAutomerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>2022-03-01 19:40:46 +0000
commit3c823239c3a7a70dc52c759d75dd94f460a3f1c5 (patch)
tree34ca83b88fed1eaac8c298f10ea762038646213a
parent259f81a35d9ca146d546f4014bbd0e82ff730349 (diff)
parentbd0c04a42d7e844c7bb6a35cb2ad805e3135fe76 (diff)
downloadsystemui-3c823239c3a7a70dc52c759d75dd94f460a3f1c5.tar.gz
Fixing themed icons not getting cropped to icon mask am: bd0c04a42d
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/libs/systemui/+/17007587 Change-Id: I3201302c2e8a11b6b7cf6d39d410dd5a847edabe
-rw-r--r--iconloaderlib/src/com/android/launcher3/icons/BaseIconFactory.java21
1 files changed, 20 insertions, 1 deletions
diff --git a/iconloaderlib/src/com/android/launcher3/icons/BaseIconFactory.java b/iconloaderlib/src/com/android/launcher3/icons/BaseIconFactory.java
index 9dbfa86..c0be55d 100644
--- a/iconloaderlib/src/com/android/launcher3/icons/BaseIconFactory.java
+++ b/iconloaderlib/src/com/android/launcher3/icons/BaseIconFactory.java
@@ -204,7 +204,7 @@ public class BaseIconFactory implements AutoCloseable {
Drawable mono = ((AdaptiveIconDrawable) icon).getMonochrome();
if (mono != null) {
// Convert mono drawable to bitmap
- Drawable paddedMono = new InsetDrawable(mono, -getExtraInsetFraction());
+ Drawable paddedMono = new ClippedMonoDrawable(mono);
info.setMonoIcon(
createIconBitmap(paddedMono, scale[0], mIconBitmapSize, Config.ALPHA_8),
this);
@@ -472,4 +472,23 @@ public class BaseIconFactory implements AutoCloseable {
return 1;
}
}
+
+ private static class ClippedMonoDrawable extends InsetDrawable {
+
+ private final AdaptiveIconDrawable mCrop;
+
+ public ClippedMonoDrawable(Drawable base) {
+ super(base, -getExtraInsetFraction());
+ mCrop = new AdaptiveIconDrawable(new ColorDrawable(Color.BLACK), null);
+ }
+
+ @Override
+ public void draw(Canvas canvas) {
+ mCrop.setBounds(getBounds());
+ int saveCount = canvas.save();
+ canvas.clipPath(mCrop.getIconMask());
+ super.draw(canvas);
+ canvas.restoreToCount(saveCount);
+ }
+ }
}