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


172

我正在尝试使用Notification.Builder.setLargeIcon(bitmap)需要位图图像的。我在可绘制文件夹中有要使用的图像,那么如何将其转换为位图?

Answers:


406

你可能是Notification.Builder.setLargeIcon(Bitmap)说吧?:)

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

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


2
为什么不点击“编辑”按钮来解决问题?(更多关于未来的建议-我已经为这个建议了。我建议编辑您的答案,不要批评他们的错别字。我不是为您这样做。)另外,+ 1是因为工作答案:)
ArtOfWarfare 2012年

1
我认为这不是一般的答案 -至少自Android开始支持矢量可绘制对象以来,这是不正确的。
robertotomás16

实施解决方案后,我得到了...... E/CommitToConfigurationOperation: Malformed snapshot token (size): ... E/NotificationService: Not posting notification with icon==0: Notification(pri=0 contentView=null vibrate=null sound=content://settings/system/notification_sound defaults=0x0 flags=0x10 color=0x00000000 vis=PRIVATE) ... E/NotificationService: WARNING: In a future release this will crash the app:...
Bhuro

44
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();

1
它告诉我bitmapDrawable无法解析为类型


如果无法将接收到的信息解析为bitmapDrawable的类型,只需按ctrl + shift + O。干杯!
portfoliobuilder

不幸的是,这种方式使我的应用程序崩溃了!
Fahad Alduraibi '16

getDrawable已弃用
JuniorMayhé17年

13
Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), R.drawable.my_drawable);

Context可以是你当前的Activity


2
对于矢量绘图?
robertotomás16

9

这是在Android中将Drawable资源转换为Bitmap的另一种方法:

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

2
您与AndyW解决方案有何不同?这是相同的!
Fahad Alduraibi '16

6

首先创建位图图像

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

现在在Notification Builder图标中设置位图。

Notification.Builder.setLargeIcon(bmp);

0

res/drawable文件夹中

1.创建一个新的Drawable Resources

2.输入文件名。

将在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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.