ALL,
根据建议here我需要从我的位图中绘制出一个可绘制的。但是当我尝试使用时:
Drawable d = new Drawable( my_bmp);
它表明不推荐使用此构造函数,而不是:
Drawable(Bitmap bmp, int resourceId)
我怎么能用位图制作一个可绘制的?
谢谢。
答案 0 :(得分:23)
您可以使用
Drawable d = new BitmapDrawable(getResources(), my_bmp);
包装位图的Drawable,可以平铺,拉伸或 对齐。您可以从文件路径(输入)创建BitmapDrawable 流,通过XML膨胀,或从Bitmap对象。
BitmapDrawable(Resources res, Bitmap bitmap)
从位图创建drawable,基于设置初始目标密度 显示资源的指标。
另请参阅公共构造函数@
http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html
答案 1 :(得分:3)
尝试将Bitmap
加载为Bitmap Drawable
如下所示创建ImgDrawableFromFile(Resources res, String file_name)
Drawable d = null;
public Drawable ImgDrawableFromFile(Resources res, String file_name) {
myBitmap = null;
File imgFile = new File(
"/data/data/yourpkgname/app_my_sub_dir/images/" + file_name);
if (imgFile.exists()) {
myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
if (myBitmap != null) {
d = new BitmapDrawable(res, myBitmap);
return d;
} else {
return null;
}
}
return null;
}
现在称这个函数为
img.setBackgroundDrawable(ImgDrawableFromFile(getResources(), "1.jpg")); // pass your saved file name as second argument
答案 2 :(得分:3)
派对有点晚,但我看到了一个明显的误解。提供的答案确实是正确的:
Drawable d = new BitmapDrawable(getResources(),bitmap);
在这种情况下,getResources()
是Context
或Activity
中可用的方法,仅用于查找屏幕密度并相应地调整Drawable。
所以Igor,即使你从云端加载图像,你仍然可以调用getResources()。
快乐编码
答案 3 :(得分:2)
BitmapDrawable(Bitmap bitmap)
构造函数已为deprecated
你可以使用
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
答案 4 :(得分:0)
您可以使用BitmapDrawable类从位图获取Drawable
答案 5 :(得分:0)
如果Mauro Banze迟到了,那么我真的不知道我在这里做什么。但对于那些迫切寻找解决方案的人来说,这就是我所做的:
在将项目从JavaFX引入Android时,我偶然发现了同样的问题。我想重用我的大部分数据"只管理和提供我的数据并且对UI没有影响的类。
足够讲故事,我们走了:
问题:
Drawable
才能在屏幕上显示位图。Drawable
Context
或非Activity
课程中执行此操作,因为我们需要Resources
。那么为什么我们不将它保存为Bitmap
直到我们需要它被绘制(这肯定会在Context
或Activity
类中发生)。
我创建了一个名为BitmapImage
的类。它看起来像这样:
public class BitmapImage {
private final Bitmap bitmap;
public BitmapImage (Bitmap bitmap) {
this.bitmap = bitmap;
}
public Bitmap getBitmap() {
return bitmap;
}
public Drawable getDrawable(Resources res) {
return new BitmapDrawable(res,getBitmap());
}
这个非常简单的课程"保存"位图。因此,而不是使用Drawable
与BitmapImage
合作,直到您真的迫切需要Drawable
。
此时,您应该在Activity
或Context
,并且可以在那里拨打Drawable foo = anyBitmapImage.getDrawable(getResource())
。