将Bitmap转换为drawable并将其存储在数组中

时间:2012-10-03 08:24:09

标签: android image

我在布局中使用了图片滑块,为此我使用了

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

    } 

2 个答案:

答案 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可能很大并且将它们(或位图)存储在内存中可能会让你快速遇到内存不足的情况,因为手机的堆大小通常很小。