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