我的资源中有一组图像。现在我正在使用骰子滚轮,它将挑选并显示随机骰子图像1-6。
像这样命名的图像:die1.png,die2.png,die3.png,die4.png,die5.png,die6.png
我似乎偶然发现了一种简单的工作方法来做到这一点,但说实话,我不知道它是否可行和稳定,因为坦率地说我不知道它是如何工作的,并且会非常感兴趣被引导到任何文件或有人解释为什么这样做。我不想成为那些复制粘贴代码的人之一,也不知道它为什么会起作用,而且我花了很长时间试图弄清楚这个并没有得出结论。
代码(如果重要的话,在Eclipse中):
rand_1 = (int) Math.round(Math.random() * 5);
dice1.setImageResource(R.drawable.die1 + rand_1);
因此我们得到一个从0到5的数字,并将其添加到命名序列中第一个图像的resId,以随机拉出6个模具图像中的一个。有道理,但是如何确保资源文件夹中的图像按顺序分配resID?就此而言,有关编译器如何分配整数资源ID的文档是否易于理解?我觉得我可能会遗漏一些简单的东西。谢谢你们的时间和男孩们。
如果这不是一个稳定的解决方案(到目前为止编译似乎工作正常)是否有更好的方法来实现这种行为?
答案 0 :(得分:1)
将此方法添加到您的班级:
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));