Java Android:随机图像,带有顺序命名资源中的setImageResource

Java Android:随机图像,带有顺序命名资源中的setImageResource,java,android,image,random,resources,Java,Android,Image,Random,Resources,我的资源中有一组图像。现在,我在一个骰子滚轮上工作,它将拾取并显示一个随机的骰子图像1-6 像这样命名的图像:die1.png、die2.png、die3.png、die4.png、die5.png、die6.png 我似乎偶然发现了一种简单的工作方法来实现这一点,但老实说,我不知道它是否可行和稳定,因为坦率地说,我不知道它是如何工作的,我会非常有兴趣被引导到任何文档中,或者让人解释为什么这样做。我不想成为那些复制粘贴代码的人之一,也不知道它为什么会起作用,我花了相当长的时间试图弄明白这一点,但

我的资源中有一组图像。现在,我在一个骰子滚轮上工作,它将拾取并显示一个随机的骰子图像1-6

像这样命名的图像:die1.png、die2.png、die3.png、die4.png、die5.png、die6.png

我似乎偶然发现了一种简单的工作方法来实现这一点,但老实说,我不知道它是否可行和稳定,因为坦率地说,我不知道它是如何工作的,我会非常有兴趣被引导到任何文档中,或者让人解释为什么这样做。我不想成为那些复制粘贴代码的人之一,也不知道它为什么会起作用,我花了相当长的时间试图弄明白这一点,但还没有得出结论

代码(在Eclipse中,如果重要的话):

因此,我们得到一个从0到5的数字,并将其添加到命名序列中第一幅图像的剩余部分,以随机抽取6幅图像中的一幅。这是有道理的,但是您如何确保资源文件夹中的图像是按这样的顺序分配的?对于这一点,是否有易于理解的关于编译器如何分配整数资源ID的文档?我觉得我可能错过了一些简单的东西。谢谢你们抽出时间,伙计们


如果这不是一个稳定的解决方案(到目前为止,它似乎运行良好),是否有更好的方法来实现这种行为?

将此方法添加到类中:

protected final static int getResourceID
(final String resName, final String resType, final Context ctx)
{
    final int ResourceID =
        ctx.getResources().getIdentifier(resName, resType,
            ctx.getApplicationInfo().packageName);
    if (ResourceID == 0)
    {
        throw new IllegalArgumentException
        (
            "No resource string found with name " + resName
        );
    }
    else
    {
        return ResourceID;
    }
}
然后像这样使用它:

rand_1 = (int) Math.round(Math.random() * 5);
dice1.setImageResource(getResourceID("die" + rand_1, "drawable", ctx));

谢谢你提供的信息。这种查找资源的方法对我来说比上面发布的方法更有意义,但我发布这个问题的主要原因是试图弄清楚我在OP中描述的解决方案为什么有效(而且它确实可以复制)。这就是说,这似乎是一个非常可行的选择,我感谢你提供它。
rand_1 = (int) Math.round(Math.random() * 5);
dice1.setImageResource(getResourceID("die" + rand_1, "drawable", ctx));