资源的ID在哪里?

时间:2013-01-11 05:28:48

标签: android

Android将为res / drawable目录中的每个pics分配id。他们在哪? 我想从池中动态选择一张图片并显示它。我怎么能这样做?

3 个答案:

答案 0 :(得分:0)

它们存储在res / drawable文件夹中。

如果文件名是demo.png,则可以通过R.drawable.demo

访问它们

如果要访问随机drawable,请将所有资源标识符存储在Integer ArrayList中,并使用Random()以编程方式生成随机函数,并从arraylist中获取该特定项。然后你每次都会有一个随机抽签。

答案 1 :(得分:0)

自动生成的ID位于gen文件中,但不建议使用它们。最好直接通过一些预定义的R.drawable.filename数组使用文件名并随机选择它们。

答案 2 :(得分:0)

这些ID存储在R.java文件中,但您无法对其进行编辑,因为每次更改都会覆盖您的更改。

您还可以按名称访问资源,如果您知道资源的名称或者可以根据某些预定义的命名方案派生它们,这可能是解决问题的可行方法。 (例如,图像以序列image1image2等命名。

您必须使用Resources类的getIdentifier()方法将名称映射到标识符。

String name = "resource" + rng.nextInt(count);
int resource = getResources().getIdentifier(name, "drawable", "com.package");

此方法的文档说:

  

注意:使用此功能是   泄气。效率更高   按标识符检索资源   而不是名字。

这是正确的,但如果您在性能不敏感的代码中执行此操作,则无需成为问题。

或者,如果您不介意在XML中列出资源,可以创建a typed array然后随机选择。