16

我有一个 android 应用程序,其中资产文件夹中有几个图像。现在我想制作一个图像数组。现在我的问题是:-当我们的图像处于可绘制状态时,我们可以制作一个像

int x[] = {
    R.drawable.ss,
    R.drawable.aa, R.drawable.sk,
    R.drawable.xx
};

等等。当我的图像位于资产文件夹中时,如何制作与上述相同的图像数组。我想在班级级别制作一个数组。

4

4 回答 4

26

您必须逐张阅读图像,如下所示:

您可以使用 AssetManager 使用其 open() 方法获取 InputStream,然后使用 BitmapFactory 的 decodeStream() 方法获取 Bitmap。

private Bitmap getBitmapFromAsset(String strName)
    {
        AssetManager assetManager = getAssets();
        InputStream istr = null;
        try {
            istr = assetManager.open(strName);
        } catch (IOException e) {
            e.printStackTrace();
        }
        Bitmap bitmap = BitmapFactory.decodeStream(istr);
        return bitmap;
    }
于 2013-09-24T05:30:18.123 回答
6

如果您的图像存储在资产目录的图像文件夹中,那么您可以获取图像列表

private List<String> getImage(Context context) throws IOException {
      AssetManager assetManager = context.getAssets();
      String[] files = assetManager.list("image");   
      List<String> it = Arrays.asList(files);
      return it; 
}
于 2013-09-24T05:33:00.663 回答
4
 // load image from asset folder 
        try {
            // get input stream
            InputStream ims = getAssets().open("avatar.jpg");
            // load image as Drawable
            Drawable d = Drawable.createFromStream(ims, null);
            // set image to ImageView
            mImage.setImageDrawable(d);
        }
        catch(IOException ex) {
            return;
        }

  or you can create drawable array
    Drawable d []={d};
于 2013-09-24T05:34:08.483 回答
1

您对可绘制对象和资产有错误的含义。您可以将数组 od 设为“drawables”,因为所有可绘制对象在 R 中都有自己的 id(如 R.dawable.ss),因此如果您有适当的上下文,您可以使用指定的整数来获取可绘制对象。

管理图像等文件的其他方式是评估。如果你想通过他们的 id 管理图像,你必须添加这个图像做 drawables。换句话说,assets 文件必须像 dir 中的简单文件一样进行管理。

您必须从资产中获取文件AssetManager am=this.getAssets();,然后准备要读取/写入的文件。如果你有图像,你可以这样做:

try {    
    Bitmap bmp=BitmapFactory.decodeStream(am.open("009.gif"));
    imageView.setImageBitmap(bmp);

} catch (IOException e) {
    e.printStackTrace();
}
于 2013-09-24T05:34:04.497 回答