【问题标题】:Get sequential file name from drawable folder从可绘制文件夹中获取顺序文件名
【发布时间】:2014-11-15 07:04:55
【问题描述】:

我正在编写一个应用程序,其中使用放置在可绘制文件夹中的 200 多个图像,并且所有这些文件都遵循相同的命名约定,例如 thumb+X

读取/显示这些文件的一种方法是通过关注R.drawable.XXX 选择每个可绘制文件。

有没有办法使用循环或其他方式读取这些文件名..所以无论它会在drawable中更新多少文件,都不需要触摸源文件。

任何建议!

【问题讨论】:

    标签: android loops drawable


    【解决方案1】:

    您可以使用以下函数首先获取资源ID,如下所示:

    int resource_id=getResources().getIdentifier("thumb"+x, "drawable", getPackageName());
    

    假设您在 Activity 内(getResources / getPackageName 是 Activity 方法)

    如果你需要Drawable

    Drawable myDrawable=getResources().getDrawable (resource_id);
    

    请注意,按名称访问可绘制对象的速度较慢,您不应滥用此方法。

    【讨论】:

      【解决方案2】:

      首先你创建一个类似的字符串值非常简单。

      String name= "R.drawable.thumb";
      

      现在像这样循环

      for(int i=1;i<=200;i++){
          String resource = name + i;
          try {
              Class c = Drawable.class;
              Field idField = c.getDeclaredField(resource);
              int resourceDrwable = idField.getInt(idField);
          } catch (Exception e) {
              e.printStackTrace();
          }
      }
      

      完成了。

      另一种方式是

      int resourceId=Resources.getSystem().getIdentifier(pDrawableName, "drawable", "android");
      

      【讨论】:

      • 在 R 类上使用反射很危险,发布构建 proguard 优化将重命名或仅删除常量。此外,即使它可以工作,反射也是Android中效率最低的操作。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-30
      • 1970-01-01
      • 2018-01-29
      相关资源
      最近更新 更多