From 1fd0acf6e404ddc082f6eee5defde7c02f8e98b7 Mon Sep 17 00:00:00 2001 From: Katharine Date: Tue, 9 Nov 2021 15:31:10 +0800 Subject: [PATCH 1/2] padding images with darken header color, remove outline artifacts behind thumbnail on card lists --- .../card_locker/LoyaltyCardCursorAdapter.java | 13 ++++++++ .../protect/card_locker/ShortcutHelper.java | 31 +++++++++++++++++++ .../main/res/layout/loyalty_card_layout.xml | 3 +- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java index 4f08c1250..b85d3b2be 100644 --- a/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java +++ b/app/src/main/java/protect/card_locker/LoyaltyCardCursorAdapter.java @@ -5,6 +5,7 @@ import android.content.res.Resources; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.Color; +import android.graphics.Outline; import android.graphics.drawable.Drawable; import android.util.SparseBooleanArray; import android.util.TypedValue; @@ -12,6 +13,7 @@ import android.view.HapticFeedbackConstants; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import android.view.ViewOutlineProvider; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; @@ -73,6 +75,15 @@ public class LoyaltyCardCursorAdapter extends BaseCursorAdapter + app:cardBackgroundColor="@android:color/transparent"> Date: Wed, 10 Nov 2021 13:26:20 +0800 Subject: [PATCH 2/2] 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; }