Android可绘制图像int

时间:2016-10-10 21:37:39

标签: android drawable android-drawable

我在drawable文件夹中使用了大量图片 我希望在

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

有没有办法在没有逐一写出图像名称的情况下获得所有图片?

3 个答案:

答案 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代码。

RES /值/ 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));

这个实现仍然需要写一次drawables列表,但是你可以消除因循环中硬编码字符串而导致的错误,并且很容易在你的代码中使用。