Java 从“资源”文件夹加载图像

Java 从“资源”文件夹加载图像,java,android,Java,Android,我有一个android应用程序,在其中的assets文件夹中有几个图像。现在我想制作一个图像数组。现在我的问题是:- 当我们的图像处于可绘制状态时,我们可以制作如下数组 int x[] = { R.drawable.ss, R.drawable.aa, R.drawable.sk, R.drawable.xx }; 等等。当我的图像位于“资源”文件夹中时,如何制作与上述相同的图像数组。 我想在类级别创建一个数组。您必须像下面这样逐个图像地读取图像: 可以使用AssetM

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

int x[] = {
    R.drawable.ss,
    R.drawable.aa, R.drawable.sk,
    R.drawable.xx
};
等等。当我的图像位于“资源”文件夹中时,如何制作与上述相同的图像数组。
我想在类级别创建一个数组。

您必须像下面这样逐个图像地读取图像:

可以使用AssetManager的open()方法获取InputStream,然后使用BitmapFactory的decodeStream()方法获取位图

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

如果您的图像存储在资产目录的图像文件夹中,那么您可以通过这种方式获得图像列表

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; 
}
私有列表getImage(上下文上下文)引发IOException{
AssetManager AssetManager=context.getAssets();
String[]files=assetManager.list(“图像”);
List it=Arrays.asList(文件);
归还它;
}

您对可支取资产和资产的理解是错误的。您可以将数组od设置为“drawables”,因为所有的drawables在R中都有自己的id(比如R.dawable.ss),所以如果您有合适的上下文,您可以使用指定的整数来获取drawable

管理像图像这样的文件的另一种方法是资产。如果你想通过他们的ID管理图像,你必须将这些图像添加到drawables中。换句话说,资产文件必须像目录中的简单文件一样进行管理

您必须从assets
AssetManager am=this.getAssets()获取文件然后准备要读/写的文件。如果您有图像,您可以执行以下操作:

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

} catch (IOException e) {
    e.printStackTrace();
}

您可以使用带有filenamesuse search的字符串数组来完成,我想在类级别声明它。这是可能的吗?您需要先获取上下文,然后才能获取资产。您可以用示例进行详细解释吗?我编辑了上面的代码,如果您想在类级别中使用,那么您应该像上面一样传递上下文,但请确保先用Activity或ApplicationContext初始化Conetx
 // 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};