3

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

      private Integer[] mImageIds = { R.drawable.j, R.drawable.f,R.drawable.i,    R.drawable.g, R.drawable.k }; 

拍摄图像。但现在我想从 sdcard 中获取图像并将这些图像存储到该数组中。我该怎么做?下面是我的代码。我将拇指存储在数据库中。我将位图转换为可绘制的,然后如何将其存储到数组 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);

    } 
4

2 回答 2

1

只有您存储在“res”文件夹中的图像才能添加到整数数组中。您可以从动态创建的位图创建一个 int res。正如您在代码中提到的那样,您只能将其转换为 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);

    } 
于 2012-10-03T08:39:29.690 回答
0

你可以创建一个

private Drawable[] drawables = new Drawable[mImageIds.length];

并以相应的尺寸复制图像。

话虽如此:drawables 可能很大并且将它们(或位图)存储在内存中可能会使您很快遇到内存不足的情况,因为手机通常具有较小的堆大小。

于 2012-10-03T08:29:26.980 回答