From 11df4376a1ae67d0f6d8e838808de1023ea5d045 Mon Sep 17 00:00:00 2001 From: MM20 <15646950+MM2-0@users.noreply.github.com> Date: Sat, 9 Apr 2022 17:37:13 +0200 Subject: [PATCH] Fix text drawable icon scaling --- .../mm20/launcher2/graphics/TextDrawable.kt | 5 +++- .../launcher2/search/data/CalendarEvent.kt | 30 +++++++------------ .../de/mm20/launcher2/search/data/Contact.kt | 2 ++ .../de/mm20/launcher2/search/data/Website.kt | 4 ++- 4 files changed, 19 insertions(+), 22 deletions(-) diff --git a/base/src/main/java/de/mm20/launcher2/graphics/TextDrawable.kt b/base/src/main/java/de/mm20/launcher2/graphics/TextDrawable.kt index 2df62e99..6840066c 100644 --- a/base/src/main/java/de/mm20/launcher2/graphics/TextDrawable.kt +++ b/base/src/main/java/de/mm20/launcher2/graphics/TextDrawable.kt @@ -7,7 +7,8 @@ import android.graphics.drawable.Drawable class TextDrawable( val text: String, val color: Int = Color.WHITE, - fontSize: Float = 13f, + val height: Int? = null, + val fontSize: Float = 13f, typeface: Typeface = Typeface.DEFAULT ): Drawable() { @@ -25,6 +26,8 @@ class TextDrawable( override fun draw(canvas: Canvas) { val bounds = bounds + if (height != null) paint.textSize = fontSize * bounds.height().toFloat() / height.toFloat() + else paint.textSize = fontSize paint.getTextBounds(text, 0, text.length, rect) canvas.drawText(text, bounds.exactCenterX(), bounds.exactCenterY() + rect.height() / 2f, paint) } diff --git a/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt b/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt index 31adbd31..7235bad3 100644 --- a/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt +++ b/calendar/src/main/java/de/mm20/launcher2/search/data/CalendarEvent.kt @@ -8,6 +8,7 @@ import android.graphics.Typeface import android.graphics.drawable.ColorDrawable import android.graphics.drawable.LayerDrawable import android.provider.CalendarContract +import android.text.format.DateFormat import androidx.core.content.ContextCompat import androidx.core.graphics.ColorUtils import androidx.core.graphics.blue @@ -18,6 +19,7 @@ import de.mm20.launcher2.graphics.TextDrawable import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.ktx.dp import java.text.SimpleDateFormat +import java.util.* class CalendarEvent( override val label: String, @@ -37,27 +39,15 @@ class CalendarEvent( override fun getPlaceholderIcon(context: Context): LauncherIcon { - val df = SimpleDateFormat("d") - val day = df.format(startTime) - df.applyPattern("MMM") - val month = df.format(startTime) - val fgLayers = arrayOf( - TextDrawable( - day, - color = Color.WHITE, - fontSize = 20 * context.dp, - typeface = Typeface.DEFAULT_BOLD - ), - TextDrawable( - month, - color = Color.WHITE, - fontSize = 13 * context.dp, - typeface = Typeface.DEFAULT_BOLD - ) + val df = SimpleDateFormat("dd") + val s = (48 * context.dp).toInt() + val foreground = TextDrawable( + df.format(startTime), + color = Color.WHITE, + fontSize = 24 * context.dp, + typeface = Typeface.DEFAULT_BOLD, + height = s ) - val foreground = LayerDrawable(fgLayers) - foreground.setLayerInset(0, 0, 0, 0, (13 * context.dp).toInt()) - foreground.setLayerInset(1, 0, (20 * context.dp).toInt(), 0, 0) val background = ColorDrawable(getDisplayColor(context, color)) return LauncherIcon( foreground = foreground, diff --git a/contacts/src/main/java/de/mm20/launcher2/search/data/Contact.kt b/contacts/src/main/java/de/mm20/launcher2/search/data/Contact.kt index f0ab75b4..f6b82dac 100644 --- a/contacts/src/main/java/de/mm20/launcher2/search/data/Contact.kt +++ b/contacts/src/main/java/de/mm20/launcher2/search/data/Contact.kt @@ -15,6 +15,7 @@ import de.mm20.launcher2.contacts.R import de.mm20.launcher2.graphics.TextDrawable import de.mm20.launcher2.icons.LauncherIcon import de.mm20.launcher2.ktx.asBitmap +import de.mm20.launcher2.ktx.dp import de.mm20.launcher2.ktx.sp import de.mm20.launcher2.preferences.Settings.IconSettings.LegacyIconBackground import kotlinx.coroutines.Dispatchers @@ -51,6 +52,7 @@ class Contact( iconText, Color.WHITE, fontSize = 20 * context.sp, + height = (48 * context.dp).toInt(), typeface = Typeface.DEFAULT_BOLD ), background = ColorDrawable(ContextCompat.getColor(context, R.color.blue)) diff --git a/websites/src/main/java/de/mm20/launcher2/search/data/Website.kt b/websites/src/main/java/de/mm20/launcher2/search/data/Website.kt index 62ce87ee..bb88b1c4 100644 --- a/websites/src/main/java/de/mm20/launcher2/search/data/Website.kt +++ b/websites/src/main/java/de/mm20/launcher2/search/data/Website.kt @@ -12,6 +12,7 @@ import coil.imageLoader import coil.request.ImageRequest import de.mm20.launcher2.graphics.TextDrawable import de.mm20.launcher2.icons.LauncherIcon +import de.mm20.launcher2.ktx.dp import de.mm20.launcher2.ktx.sp import de.mm20.launcher2.preferences.Settings import de.mm20.launcher2.preferences.Settings.IconSettings.LegacyIconBackground @@ -56,7 +57,8 @@ class Website( TextDrawable( label[0].toString(), typeface = Typeface.DEFAULT_BOLD, - fontSize = 40 * context.sp + fontSize = 40 * context.sp, + height = (48 * context.dp).toInt() ) } else context.getDrawable(R.drawable.ic_website)!! return LauncherIcon(