From 40a68a55e28f37ed64bf0be11fdf1dfe933fecad Mon Sep 17 00:00:00 2001 From: Katharine Date: Wed, 10 Nov 2021 13:26:20 +0800 Subject: [PATCH] simplify adaptive bitmap creation with Canvas, trigger shortcut list refresh on card save --- .../card_locker/LoyaltyCardEditActivity.java | 2 ++ .../java/protect/card_locker/ShortcutHelper.java | 14 ++++---------- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java index 5112f8185..b527bd11e 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardEditActivity.java @@ -1284,6 +1284,8 @@ public class LoyaltyCardEditActivity extends CatimaAppCompatActivity { db.setLoyaltyCardGroups(loyaltyCardId, selectedGroups); + ShortcutHelper.updateShortcuts(this, db.getLoyaltyCard(loyaltyCardId)); + finish(); } diff --git a/app/src/main/java/protect/card_locker/ShortcutHelper.java b/app/src/main/java/protect/card_locker/ShortcutHelper.java index 3d08d9081..984f5f56a 100644 --- a/app/src/main/java/protect/card_locker/ShortcutHelper.java +++ b/app/src/main/java/protect/card_locker/ShortcutHelper.java @@ -3,6 +3,7 @@ package protect.card_locker; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; +import android.graphics.Canvas; import android.graphics.Color; import android.os.Bundle; @@ -120,18 +121,11 @@ class ShortcutHelper { } static @NotNull Bitmap createAdaptiveBitmap(@NotNull Bitmap in, int paddingColor){ - int[] basePixels = new int[ADAPTIVE_BITMAP_SIZE * ADAPTIVE_BITMAP_SIZE]; - paddingColor = ColorUtils.compositeColors(PADDING_COLOR_OVERLAY, paddingColor); - Arrays.fill(basePixels, paddingColor); Bitmap ret = Bitmap.createBitmap(ADAPTIVE_BITMAP_SIZE, ADAPTIVE_BITMAP_SIZE, Bitmap.Config.ARGB_8888); - ret.setPixels(basePixels, 0, ADAPTIVE_BITMAP_SIZE, 0, 0, ADAPTIVE_BITMAP_SIZE, ADAPTIVE_BITMAP_SIZE); + Canvas output = new Canvas(ret); + output.drawColor(ColorUtils.compositeColors(PADDING_COLOR_OVERLAY, paddingColor)); Bitmap resized = Utils.resizeBitmap(in, ADAPTIVE_BITMAP_IMAGE_SIZE); - int[] inputPixels = new int[resized.getHeight() * resized.getWidth()]; - resized.getPixels(inputPixels, 0, resized.getWidth(), 0, 0, resized.getWidth(), resized.getHeight()); - for(int i = 0;i < inputPixels.length; i++) { - inputPixels[i] = ColorUtils.compositeColors(inputPixels[i], paddingColor); - } - ret.setPixels(inputPixels, 0, resized.getWidth(), (ADAPTIVE_BITMAP_SIZE - resized.getWidth()) / 2, (ADAPTIVE_BITMAP_SIZE - resized.getHeight()) / 2, resized.getWidth(), resized.getHeight()); + output.drawBitmap(resized, (ADAPTIVE_BITMAP_SIZE - resized.getWidth()) / 2f, (ADAPTIVE_BITMAP_SIZE - resized.getHeight()) / 2f, null); return ret; }