我正在尝试将Android快捷方式添加到应用程序中,包括动态快捷方式和图标,它们将从位图创建。现在看起来像这样:
如您所见,动态快捷方式图标的中心有一个正方形图像,但是我需要它占用图标的所有空间,因此不会有白色背景。 代码:
Bitmap interlocutorAvatar = BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_conference);
ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(context, peer.getId())
.setLongLabel("Dynamic shortcut")
.setShortLabel("Dynamic")
.setIcon(Icon.createWithBitmap(interlocutorAvatar))
.setIntent(new Intent(Intent.ACTION_VIEW).setClass(context, VCEngine.appInfo().getActivity(ActivitySwitcher.ActivityType.CHAT))
.putExtra(CustomIntent.EXTRA_PEER_ID, peer.getId())
.putExtra(CustomIntent.EXTRA_CHAT_ID, peer.getId()))
.build();
答案 0 :(得分:0)
添加到要在xml文件中加载图像的imageView
android:scaleType="centerCrop"
答案 1 :(得分:0)
我想我已经找到了一种可能的解决方案,那就是使用自适应图标。在我看来,这有点不可思议,但是只要有效就可以了。 我已经使用了AdaptiveIconDrawable,这是怎么做的:
将位图转换为自适应位图的代码:
@RequiresApi(api = Build.VERSION_CODES.O)
public static Bitmap convertBitmapToAdaptive(Bitmap bitmap, Context context) {
Drawable bitmapDrawable = new BitmapDrawable(context.getResources(), bitmap);
AdaptiveIconDrawable drawableIcon = new AdaptiveIconDrawable(bitmapDrawable, bitmapDrawable);
Bitmap result = Bitmap.createBitmap(drawableIcon.getIntrinsicWidth(), drawableIcon.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(result);
drawableIcon.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
drawableIcon.draw(canvas);
return result;
}
然后您可以像这样设置快捷方式的图标:
setIcon(Icon.createWithAdaptiveBitmap(convertBitmapToAdaptive(yourBitmap, context)))