资源的 ID 在哪里?



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

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

如果文件名是demo.png,那么它们可以被r.d drawable.demo

访问

如果你想访问一个随机绘制的,存储所有的资源标识符在一个整数数组列表,并通过编程生成一个随机函数使用random(),并从数组列表中获得特定的项目。然后你每次都会有一个随机绘制的

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

这些id存储在r.j java文件中,但是您不能编辑它,因为每次更改都是重写的。

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

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

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

这个方法的文档说:

注:此函数的使用是气馁。效率要高得多按标识符检索资源

这是真的,但是如果你在对性能不敏感的代码中这样做,那就不是问题了。

或者,如果您不介意在XML中列出资源,您可以创建一个类型化数组,然后从中随机选择。

最新更新