我在布局中使用了图片滑块,为此我使用了
private Integer[] mImageIds = { R.drawable.j, R.drawable.f,R.drawable.i, R.drawable.g, R.drawable.k };
拍摄图像。但是现在我想从sdcard拍摄图像并将这些图像存储到该阵列中。我该怎么做? 下面是我的代码。我将拇指存储在数据库中。我将位图转换为drawable,然后如何将其存储到Array mImages中?
List<String> thumb = new ArrayList<String>();
public Integer[] mImageIds;
Bitmap bitmap;
thumb = db.getRecomdThumb();//get image address from db
for(int i = 0; i < thumb.size();i++){
bitmap = BitmapFactory.decodeFile(thumb.get(i));
Drawable d = new BitmapDrawable(getResources(),bitmap);
}
答案 0 :(得分:1)
只有存储在“res”文件夹中的图像才能添加到Integer数组中。您可以从动态创建的Bitmap创建一个int res。您只能将其转换为Drawable,就像您在代码中提到的那样。
如果你问我,如果我将动态创建的drawable添加到res文件夹,是否可以获得Int表示,这是不可能的。
“Res”文件夹无法修改。它是只读的。
所以你要做的就是创建一个Drawable数组而不是Integer数组并进行操作。
这样的东西会起作用,
List<String> thumb = new ArrayList<String>();
public Integer[] mImageIds;
Bitmap bitmap;
thumb = db.getRecomdThumb();//get image address from db
private Drawable[] drawables = new Drawable[thumb.size()];
for(int i = 0; i < thumb.size();i++){
bitmap = BitmapFactory.decodeFile(thumb.get(i));
drawables[i] = new BitmapDrawable(getResources(),bitmap);
}
答案 1 :(得分:0)
你可以创建一个
private Drawable[] drawables = new Drawable[mImageIds.length];
并以相应的尺寸复制图像。
话虽如此:drawables可能很大并且将它们(或位图)存储在内存中可能会让你快速遇到内存不足的情况,因为手机的堆大小通常很小。