以编程方式从 Android 中的 R 文件中获取所有图像
Get All Images from R file in Android programmatically
我想知道是否有一种方法可以遍历资源文件以获取程序的所有图像并将它们推送到数组中?
如果是这样,最简单的方法是什么?
您可以通过在 java 中使用 反射来完成此操作。
如果您还不熟悉它,这是一个很好的起点 programmcreek.com:
http://www.programcreek.com/2013/09/java-reflection-tutorial/
简单地说,作为示例,您可以使用此示例代码在您的代码中循环访问 R:
import java.lang.reflect.Field;
import android.util.Log;
public class ResourceUtil {
/**
* Finds the resource ID for the current application's resources.
* @param Rclass Resource class to find resource in.
* Example: R.string.class, R.layout.class, R.drawable.class
* @param name Name of the resource to search for.
* @return The id of the resource or -1 if not found.
*/
public static int getResourceByName(Class<?> Rclass, String name) {
int id = -1;
try {
if (Rclass != null) {
final Field field = Rclass.getField(name);
if (field != null)
id = field.getInt(null);
}
} catch (final Exception e) {
Log.e("GET_RESOURCE_BY_NAME: ", e.toString());
e.printStackTrace();
}
return id;
}
此外,您可以参考以下问题以获得更多见解:
Android: Programatically iterate through Resource ids
导入Field class
import java.lang.reflect.Field;
在你的代码中写下这个
Field[] ID_Fields = R.drawable.class.getFields();
int[] resourcesArray= new int[ID_Fields.length];
for(int i = 0; i < ID_Fields.length; i++) {
try {
resourcesArray[i] = ID_Fields[i].getInt(null);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
resourcesArray
包含您所有的资源文件。
我想知道是否有一种方法可以遍历资源文件以获取程序的所有图像并将它们推送到数组中?
如果是这样,最简单的方法是什么?
您可以通过在 java 中使用 反射来完成此操作。
如果您还不熟悉它,这是一个很好的起点 programmcreek.com:
http://www.programcreek.com/2013/09/java-reflection-tutorial/
简单地说,作为示例,您可以使用此示例代码在您的代码中循环访问 R:
import java.lang.reflect.Field;
import android.util.Log;
public class ResourceUtil {
/**
* Finds the resource ID for the current application's resources.
* @param Rclass Resource class to find resource in.
* Example: R.string.class, R.layout.class, R.drawable.class
* @param name Name of the resource to search for.
* @return The id of the resource or -1 if not found.
*/
public static int getResourceByName(Class<?> Rclass, String name) {
int id = -1;
try {
if (Rclass != null) {
final Field field = Rclass.getField(name);
if (field != null)
id = field.getInt(null);
}
} catch (final Exception e) {
Log.e("GET_RESOURCE_BY_NAME: ", e.toString());
e.printStackTrace();
}
return id;
}
此外,您可以参考以下问题以获得更多见解: Android: Programatically iterate through Resource ids
导入
Field class
import java.lang.reflect.Field;
在你的代码中写下这个
Field[] ID_Fields = R.drawable.class.getFields();
int[] resourcesArray= new int[ID_Fields.length];
for(int i = 0; i < ID_Fields.length; i++) {
try {
resourcesArray[i] = ID_Fields[i].getInt(null);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
resourcesArray
包含您所有的资源文件。