如何让Android快捷方式图标填满整个可用空间
动态快捷方式头像图标去除白边问题
我正尝试在应用中添加向特定用户发送消息的动态快捷方式,希望将快捷方式图标设置为用户的头像,但无论如何操作,图标周围始终存在白边。
val contactCategories = setOf(SHARE_CATEGORY) val icon = if (friend.photo != null) IconCompat.createWithBitmap(run { val imageDecoded = Base64.decode(friend.photo, Base64.DEFAULT) val bitmap = BitmapFactory.decodeByteArray(imageDecoded, 0, imageDecoded.size) // From diesel - https://stackoverflow.com/a/15537470/7484693 // Licensed under CC BY-SA 3.0 val output: Bitmap = if (bitmap.width > bitmap.height) { Bitmap.createBitmap(bitmap.height, bitmap.height, Bitmap.Config.ARGB_8888) } else { Bitmap.createBitmap(bitmap.width, bitmap.width, Bitmap.Config.ARGB_8888) } Log.d(MainViewModel::class.java.name, "${bitmap.width} x ${bitmap.height}") val canvas = Canvas(output) val color: UInt = 0xff424242u val paint = Paint() val rect = Rect(0, 0, bitmap.width, bitmap.height) val r = if (bitmap.width > bitmap.height) { (bitmap.height / 2).toFloat() } else { (bitmap.width / 2).toFloat() } paint.isAntiAlias = true canvas.drawARGB(0, 0, 0, 0) paint.color = color.toInt() canvas.drawCircle(r, r, r, paint) paint.xfermode = PorterDuffXfermode(PorterDuff.Mode.SRC_IN) canvas.drawBitmap(bitmap, rect, rect, paint) output }) else null ShortcutManagerCompat.pushDynamicShortcut( context, ShortcutInfoCompat.Builder(context, friend.id).setShortLabel(friend.name).setPerson( Person.Builder().setName(friend.name).setKey(friend.id).setImportant(true) .setIcon(icon).build() ).setIcon(icon).setIntent(Intent( context, MainActivity::class.java ).apply { action = Intent.ACTION_SENDTO putExtra(EXTRA_RECIPIENT, friend.id) }).setLongLived(true).setCategories(contactCategories).setPerson( Person.Builder().setName(friend.name).build() ).build() )
大部分代码用于生成圆形图标,但即使不裁剪,图标也是按“适配”方式缩放,仍会露出边角。我希望按“填充”方式缩放,让背景完全不可见。图标是128x128的位图,尺寸应该足够,但放大也没有效果。
当前效果截图(注意图标周围的白边):
期望效果截图:
我知道这是可行的,因为Google多款第一方应用(Messages、Meet、Contacts)和第三方应用(WhatsApp、Discord、eBay、Snapchat)都支持此功能。是否有我遗漏的API或特定的图标创建方法?
内容的提问来源于stack exchange,提问作者Aragorn Crozier
相关产品推荐
相关产品推荐

