Add background to app shortcut chip icons

This commit is contained in:
MM20 2021-12-05 22:08:38 +01:00
parent 5ed97265a0
commit b4f5db72de
No known key found for this signature in database
GPG Key ID: 0B61A8F2DEAFA389

View File

@ -10,11 +10,13 @@ import android.content.pm.LauncherApps
import android.content.pm.PackageInstaller import android.content.pm.PackageInstaller
import android.content.pm.PackageManager import android.content.pm.PackageManager
import android.content.res.ColorStateList import android.content.res.ColorStateList
import android.graphics.Color
import android.graphics.PorterDuff import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter import android.graphics.PorterDuffColorFilter
import android.graphics.drawable.Drawable import android.graphics.drawable.Drawable
import android.graphics.drawable.LayerDrawable import android.graphics.drawable.LayerDrawable
import android.graphics.drawable.ShapeDrawable import android.graphics.drawable.ShapeDrawable
import android.graphics.drawable.VectorDrawable
import android.graphics.drawable.shapes.OvalShape import android.graphics.drawable.shapes.OvalShape
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
@ -29,7 +31,6 @@ import androidx.core.content.getSystemService
import androidx.core.graphics.alpha import androidx.core.graphics.alpha
import androidx.lifecycle.LifecycleOwner import androidx.lifecycle.LifecycleOwner
import androidx.lifecycle.Observer import androidx.lifecycle.Observer
import androidx.lifecycle.ViewModelProvider
import androidx.transition.Scene import androidx.transition.Scene
import com.google.android.material.chip.Chip import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipGroup import com.google.android.material.chip.ChipGroup
@ -238,7 +239,7 @@ class ApplicationDetailRepresentation : Representation, KoinComponent {
if (!NotificationCompat.isGroupSummary(it.notification)) { if (!NotificationCompat.isGroupSummary(it.notification)) {
val view = Chip(context) val view = Chip(context)
view.text = title view.text = title
view.chipIcon = getNotificationChipIcon(context, it.notification) view.chipIcon = createShortcutDrawable(getNotificationChipIcon(context, it.notification))
view.chipStrokeWidth = 1 * context.dp view.chipStrokeWidth = 1 * context.dp
view.chipStrokeColor = ContextCompat.getColorStateList(context, R.color.chip_stroke) view.chipStrokeColor = ContextCompat.getColorStateList(context, R.color.chip_stroke)
view.chipBackgroundColor = view.chipBackgroundColor =
@ -270,7 +271,7 @@ class ApplicationDetailRepresentation : Representation, KoinComponent {
if (launcherApps.hasShortcutHostPermission()) { if (launcherApps.hasShortcutHostPermission()) {
val shortcuts = app.shortcuts val shortcuts = app.shortcuts
val viewModel : FavoritesViewModel by (context as AppCompatActivity).viewModel() val viewModel: FavoritesViewModel by (context as AppCompatActivity).viewModel()
var count = 0 var count = 0
for (si in shortcuts) { for (si in shortcuts) {
@ -279,11 +280,12 @@ class ApplicationDetailRepresentation : Representation, KoinComponent {
val view = Chip(context) val view = Chip(context)
view.text = si.label view.text = si.label
view.chipIcon = createShortcutDrawable(launcherApps.getShortcutBadgedIconDrawable(
view.chipIcon = launcherApps.getShortcutBadgedIconDrawable(
si.launcherShortcut, si.launcherShortcut,
context.resources.displayMetrics.densityDpi context.resources.displayMetrics.densityDpi
) ))
view.chipIconSize = 24 * context.dp
view.chipIconTint = null view.chipIconTint = null
@ -328,6 +330,19 @@ class ApplicationDetailRepresentation : Representation, KoinComponent {
} }
} }
private fun createShortcutDrawable(drawable: Drawable?): Drawable {
val bgShape = ShapeDrawable(OvalShape()).apply {
paint.color = 0xFFF5F5F5.toInt()
}
if (drawable == null) return bgShape
return LayerDrawable(
arrayOf(
bgShape,
drawable
)
)
}
private fun getNotificationChipIcon(context: Context, notification: Notification): Drawable? { private fun getNotificationChipIcon(context: Context, notification: Notification): Drawable? {
return notification.getBadgeIcon(context, context.packageName)?.let { return notification.getBadgeIcon(context, context.packageName)?.let {
val _4dp = (4 * context.dp).roundToInt() val _4dp = (4 * context.dp).roundToInt()