我在drawable文件夹中使用了大量图片 我希望在
中得到一切int[] images = new int[] {
R.drawable.pic4
R.drawable.pic3
R.drawable.pic2
};
有没有办法在没有逐一写出图像名称的情况下获得所有图片?
答案 0 :(得分:1)
将您的Drawables命名为pic1,pic2,pic3 ..... picn。
然后你可以通过
获得那些Drawables int [] drawables=new int[N];
for (int i = 1; i < N; i++) {
drawables[i] = getResources()
.getIdentifier("pic"+i, "drawable", getPackageName()));
}
我希望它会对你有所帮助。一切顺利。
答案 1 :(得分:0)
我认为你已经把图像命名为pic2,pic3 .....
这可能会有很大帮助。你可以写一个while循环继续前进,直到你得到一个没有任何资源文件的名字
这个课程可以为你画上
public class ImageHelper
{
public static int getImageId(Context context, String name, String param)
{
try
{
name = param == null ? name : (name + param.toLowerCase());
int res = getResId(context, name, R.drawable.class);
if (res == 0)
{
Log.d("ImageHelper", "missing drawable: " + name);
}
return res;
} catch (Exception e)
{
return 0;
}
}
public static int getResId(Context context, String resName, Class<?> c)
{
try
{
return context.getResources().getIdentifier(resName, c.getSimpleName(), context.getPackageName());
} catch (Exception e)
{
e.printStackTrace();
return -1;
}
}
}
像这样使用
String imageName = "pic";
int index = 0; // or any index you want to start with
ArrayList<Integer> images = new ArrayList<>();
while (true) {
int resourceId = ImageHelper.getImageId(context, imageName, "" + index);
index++;
if (resourceId > 0){
images.add(resourceId);
} else {
break;
}
}
答案 2 :(得分:0)
可以将drawable的列表存储在XML数组中。这不是您问题的精确解决方案,但至少可以产生更清晰的Java代码。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="my_drawables">
<item>@drawable/image1</item>
<item>@drawable/image2</item>
<item>@drawable/image3</item>
<!-- Add other drawables -->
</array>
</resources>
final TypedArray drawableArray = getResources()
.obtainTypedArray(R.array.my_drawables);
// Example of using the array.
// Parameters are as follow: getResourceId(int index, int defValue)
// and it provides the int value of the desired drawable.
myImageView.setImageResource(drawableArray.getResourceId(1, -1));
这个实现仍然需要写一次drawables列表,但是你可以消除因循环中硬编码字符串而导致的错误,并且很容易在你的代码中使用。