Android 可绘制图像 int

Android drawable images int

我在可绘制文件夹中使用了大量图像 我想在

中得到这一切
int[] images = new int[] {
R.drawable.pic4
R.drawable.pic3
R.drawable.pic2
};

有什么办法不用一张一张写图片的名字就可以全部搞定吗?

将您的 Drawable 命名为 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()));
    }

希望对您有所帮助。祝一切顺利。

我认为你把图片命名为 pic2、pic3.....

这可能会有很大帮助。你可以写一个while循环并继续下去,直到你得到一个没有任何资源文件的名字

此 class 将为您获取可绘制对象

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

可以将可绘制对象列表存储在 XML 数组中。这不是您问题的确切解决方案,但至少可以产生更清晰的 Java 代码。

res/values/arrays.xml

<?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));

此实现仍然需要编写一次可绘制对象列表,但您消除了循环中硬编码字符串可能导致的错误,并且它很容易在您的代码中使用。