Android将为res/drawable目录中的每个图片分配id。他们在哪里?我想动态地从池中选择一张图片并显示它。我该怎么做呢?
它们存储在res/drawable文件夹中。
如果文件名是demo.png,那么它们可以被r.d drawable.demo
访问如果你想访问一个随机绘制的,存储所有的资源标识符在一个整数数组列表,并通过编程生成一个随机函数使用random(),并从数组列表中获得特定的项目。然后你每次都会有一个随机绘制的
自动生成的id在gen文件中,但不建议使用它们。最好是直接通过一些预定义的R.drawable.filename数组来使用文件名,然后随机选择它们。
这些id存储在r.j java文件中,但是您不能编辑它,因为每次更改都是重写的。
您还可以通过名称访问资源,如果您知道资源的名称,或者可以根据某些预定义的命名方案派生资源,这可能是解决问题的可行方法。(例如,图像按image1
、image2
等顺序命名。
您必须使用Resources
类的getIdentifier()方法将名称映射到标识符。
String name = "resource" + rng.nextInt(count);
int resource = getResources().getIdentifier(name, "drawable", "com.package");
这个方法的文档说:
注:此函数的使用是气馁。效率要高得多按标识符检索资源
这是真的,但是如果你在对性能不敏感的代码中这样做,那就不是问题了。
或者,如果您不介意在XML中列出资源,您可以创建一个类型化数组,然后从中随机选择。