将可绘制的资源图像转换为位图

我试图使用的 Notification.Builder.setLargeIcon(bitmap)采取一个位图图像。我有我想在我的绘图文件夹中使用的图像,那么我如何将其转换为位图呢?

236543 次浏览
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Context可以是你当前的 Activity

你可能是指 Notification.Builder.setLargeIcon(Bitmap),对吗? :)

Bitmap largeIcon = BitmapFactory.decodeResource(getResources(), R.drawable.large_icon);
notBuilder.setLargeIcon(largeIcon);

这是将资源图像转换为 Android Bitmap的一个很好的方法。

Drawable myDrawable = getResources().getDrawable(R.drawable.logo);
Bitmap myLogo = ((BitmapDrawable) myDrawable).getBitmap();

由于不推荐使用 API 22 getResources().getDrawable(),因此我们可以使用以下解决方案。

Drawable vectorDrawable = VectorDrawableCompat.create(getResources(), R.drawable.logo,  getContext().getTheme());
Bitmap myLogo = ((BitmapDrawable) vectorDrawable).getBitmap();

下面是在 android 中将 Drawable 资源转换为 Bitmap 的另一种方法:

Drawable drawable = getResources().getDrawable(R.drawable.input);
Bitmap bitmap = ((BitmapDrawable)drawable).getBitmap();

首先创建位图图像

Bitmap bmp = BitmapFactory.decodeResource(getResources(), R.drawable.image);

现在在 NotificationBuilderIcon 中设置位图... 。

Notification.Builder.setLargeIcon(bmp);

res/drawable文件夹中,

1. 创建一个新的 Drawable Resources

输入文件名。

将在 res/drawable文件夹中创建一个新文件。

在新创建的文件中替换这段代码,并用可绘制的文件名替换 ic_action_back

<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
android:src="@drawable/ic_action_back"
android:tint="@color/color_primary_text" />

现在,您可以将它与资源 ID R.id.filename一起使用。

如果有人正在为大图标寻找 Kotlin 版本,您可以使用这个

val largeIcon = BitmapFactory.decodeResource(context.resources, R.drawable.my_large_icon)