循环通过资产文件夹时的问题:(

时间:2010-11-24 22:06:21

标签: android

我在Assets文件夹中有一个名为images的子文件夹,其中我存储了我的图像(当然):)事情是我想得到我正在获得的图像的名称,但问题是我是还得到其他未知名称,如:“android-logo-mask.png”,我猜是android的默认图像。有没有办法,我可以跳过这个“Android默认图像”,只获取我的图像的名称?我的计划是将这些名称保存在数据库中,以便将其用作以后在ImageView上显示图像的参考。使用图像名称来显示图像是个好主意吗?如果需要,可以使用以下代码:

    Context context;

     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            context = this.getApplicationContext();
            ImageHelper i = new ImageHelper();
            i.readImages(context);
     }

    public class ImageHelper {
 public ImageHelper(){}

 public void readImages(Context context){
  AssetManager am = context.getAssets();
  try {
   String[] getImages = am.list("images");
   for(String imgName : getImages){    
    Log.e("IMAGE NAME----->", imgName);    
   }
  } catch (IOException e) {
   e.printStackTrace();
  }
 }

}

提前致谢。

4 个答案:

答案 0 :(得分:9)

为“MyImages”之类的图像文件夹使用其他名称。它应该工作正常。

答案 1 :(得分:2)

"images"应该是"/path/assets/images/image.png"

之类的路径

答案 2 :(得分:2)

非常有趣。即使您没有资产/图像目录,也可以使用:

myImageList = Arrays.asList(getResources().getAssets().list("images"));

你会在结果中看到android-logo-mask.png和android-logo-shine.png。

这让我想知道这些实际图像文件在Android代码中的位置。我根本不知道代码库,但是:

https://android.googlesource.com/platform/frameworks/base/+/master/core/res/assets/images/

在res 下的资产目录中列出这两个。 (与我存储项目资产的资产目录不同,不在res下)。

要求为AssetManagers list方法(返回数组)提供单个文件的路径,这没有任何意义。方法文档说:

  

返回给定路径上所有资产的String数组。

这让我想知道列表方法中是否存在错误,或者是否有其他原因设计为在需要资产列表时返回特定系统资产。

以类似的方式,如果我使用:

myAssetList = Arrays.asList(getResources().getAssets().list(""));

我看到“声音”和“webkit”包含在内,它们与我资产的任何现有子目录都不对应。

答案 3 :(得分:1)

如果系统在此“images”文件夹中添加文件,为什么不为您确定只包含文件的图片创建一个新文件夹?