From d9f0ea8346b24739c51eda8554403b10f747b6c2 Mon Sep 17 00:00:00 2001 From: Katharine Chui Date: Sun, 20 Feb 2022 03:45:53 +0800 Subject: [PATCH] emoji icons, color theme in short-cut selection menu --- .../card_locker/CardShortcutConfigure.java | 2 +- .../protect/card_locker/LetterBitmap.java | 32 +++++++++++++------ .../layout/simple_toolbar_list_activity.xml | 3 +- 3 files changed, 25 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java index 4f5fa1e33..af8589fee 100644 --- a/app/src/main/java/protect/card_locker/CardShortcutConfigure.java +++ b/app/src/main/java/protect/card_locker/CardShortcutConfigure.java @@ -16,7 +16,7 @@ import androidx.recyclerview.widget.RecyclerView; /** * The configuration screen for creating a shortcut. */ -public class CardShortcutConfigure extends AppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener { +public class CardShortcutConfigure extends CatimaAppCompatActivity implements LoyaltyCardCursorAdapter.CardAdapterListener { static final String TAG = "Catima"; private SQLiteDatabase mDatabase; diff --git a/app/src/main/java/protect/card_locker/LetterBitmap.java b/app/src/main/java/protect/card_locker/LetterBitmap.java index 94b409168..b36f98e90 100644 --- a/app/src/main/java/protect/card_locker/LetterBitmap.java +++ b/app/src/main/java/protect/card_locker/LetterBitmap.java @@ -10,6 +10,9 @@ import android.graphics.Paint; import android.graphics.Rect; import android.graphics.Typeface; import android.text.TextPaint; +import android.util.Log; + +import androidx.core.graphics.PaintCompat; /** * Original from https://github.com/andOTP/andOTP/blob/master/app/src/main/java/org/shadowice/flocke/andotp/Utilities/LetterBitmap.java @@ -48,7 +51,6 @@ class LetterBitmap { public LetterBitmap(Context context, String displayName, String key, int tileLetterFontSize, int width, int height, Integer backgroundColor, Integer textColor) { TextPaint paint = new TextPaint(); - paint.setTypeface(Typeface.create("sans-serif-light", Typeface.BOLD)); if (textColor != null) { paint.setColor(textColor); @@ -58,6 +60,8 @@ class LetterBitmap { paint.setTextAlign(Paint.Align.CENTER); paint.setAntiAlias(true); + paint.setTextSize(tileLetterFontSize); + paint.setTypeface(Typeface.defaultFromStyle(Typeface.BOLD)); if (backgroundColor == null) { mColor = getDefaultColor(context, key); @@ -66,22 +70,30 @@ class LetterBitmap { } mBitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888); - String firstChar = displayName.substring(0, 1); + String firstChar = displayName.substring(0, 1).toUpperCase(); + int firstCharEnd = 2; + while (firstCharEnd <= displayName.length()) { + // test for the longest render-able string + String test = displayName.substring(0, firstCharEnd); + if (PaintCompat.hasGlyph(paint, test)) { + firstChar = test; + } + firstCharEnd++; + } + + Log.d("LetterBitmap", "using sequence " + firstChar + " to render first char which has length " + firstChar.length()); final Canvas c = new Canvas(); c.setBitmap(mBitmap); c.drawColor(mColor); - char[] firstCharArray = new char[1]; - firstCharArray[0] = firstChar.toUpperCase().charAt(0); - paint.setTextSize(tileLetterFontSize); - - // The bounds that enclose the letter Rect bounds = new Rect(); + paint.getTextBounds(firstChar, 0, firstChar.length(), bounds); + c.drawText(firstChar, + 0, firstChar.length(), + width / 2.0f, (height - (bounds.bottom + bounds.top)) / 2.0f + , paint); - paint.getTextBounds(firstCharArray, 0, 1, bounds); - c.drawText(firstCharArray, 0, 1, width / 2.0f, height / 2.0f - + (bounds.bottom - bounds.top) / 2.0f, paint); } /** diff --git a/app/src/main/res/layout/simple_toolbar_list_activity.xml b/app/src/main/res/layout/simple_toolbar_list_activity.xml index d445616f3..17b802eff 100644 --- a/app/src/main/res/layout/simple_toolbar_list_activity.xml +++ b/app/src/main/res/layout/simple_toolbar_list_activity.xml @@ -3,7 +3,8 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" - android:layout_height="match_parent"> + android:layout_height="match_parent" + android:fitsSystemWindows="true">