diff options
author | Sunny Goyal <sunnygoyal@google.com> | 2022-03-01 19:40:46 +0000 |
---|---|---|
committer | Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com> | 2022-03-01 19:40:46 +0000 |
commit | 3c823239c3a7a70dc52c759d75dd94f460a3f1c5 (patch) | |
tree | 34ca83b88fed1eaac8c298f10ea762038646213a | |
parent | 259f81a35d9ca146d546f4014bbd0e82ff730349 (diff) | |
parent | bd0c04a42d7e844c7bb6a35cb2ad805e3135fe76 (diff) | |
download | systemui-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.java | 21 |
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); + } + } } |