将位图转换为可绘制对象并将其存储在数组中

3
我在我的布局中使用了图片轮播,为此我使用了。
      private Integer[] mImageIds = { R.drawable.j, R.drawable.f,R.drawable.i,    R.drawable.g, R.drawable.k }; 

我想从SD卡中获取图片并将这些图像存储到数组中。如何做到这一点?以下是我的代码。我将缩略图存储在数据库中。我已将位图转换为可绘制对象,现在该如何将其存储到数组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);

    } 

我想从SD卡中仅显示一些图像,因此我正在与数据库交互。 - Brinda K
2个回答

1

只有存储在“res”文件夹内的图像才能添加到整数数组中。您可以从动态创建的位图创建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);

    } 

0

你可以创建一个

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

并复制相应大小的图像。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接