Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 将位图转换为可绘制并存储在数组中_Android_Image - Fatal编程技术网

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

Android 将位图转换为可绘制并存储在数组中,android,image,Android,Image,我在布局中使用图像滑块,为此我使用了 private Integer[] mImageIds = { R.drawable.j, R.drawable.f,R.drawable.i, R.drawable.g, R.drawable.k }; 但现在我想从SD卡中获取图像并将这些图像存储到该阵列中。我如何才能做到这一点? 下面是我的代码。我将拇指存储在数据库中。我将位图转换为可绘制,然后如何将其存储到阵列模拟图像中 List<String> thum

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

      private Integer[] mImageIds = { R.drawable.j, R.drawable.f,R.drawable.i,    R.drawable.g, R.drawable.k }; 
但现在我想从SD卡中获取图像并将这些图像存储到该阵列中。我如何才能做到这一点? 下面是我的代码。我将拇指存储在数据库中。我将位图转换为可绘制,然后如何将其存储到阵列模拟图像中

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

    } 
List thumb=newarraylist();
公共整数[]mimageid;
位图;
thumb=db.getRecomdThumb()//从数据库中获取图像地址
对于(int i=0;i
您可以创建一个

private Drawable[] drawables = new Drawable[mImageIds.length];
并复制相应大小的图像


话虽如此:Drawable可能很大,将其(或位图)存储在内存中可能会使您很快陷入内存不足的情况,因为手机通常具有较小的堆大小。

只有存储在“res”文件夹中的图像才能添加到整数数组中。您可以从动态创建的位图创建int-res。您只能将其转换为代码中提到的Drawable

如果你问我,如果我添加动态创建的drawable to res文件夹,是否可以获得Int表示,这是不可能的

无法修改“Res”文件夹。它是只读的

因此,您需要做的是,只需创建一个可绘制数组而不是整数数组,然后执行您的操作

像这样的东西会有用的

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

    } 
List thumb=newarraylist();
公共整数[]mimageid;
位图;
thumb=db.getRecomdThumb()//从数据库中获取图像地址
private Drawable[]drawables=新的Drawable[thumb.size()];
对于(int i=0;i
我只想显示SD卡中的一些图像,因此我正在与db交互