安卓版本:4.2
我正在开发一个安卓应用程序。我需要从可绘制文件夹中随机生成图像。在我的可绘制对象中,我有 45 张不同名称的图像。
我的 xml 代码是:
<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
我试过这段代码:
ImageView img=(ImageView)findViewById(R.id.imageView1);
Random rand = new Random();
int rndInt = rand.nextInt(52) + 1;
String drawableName = "photo"+ rndInt;
int resID = getResources().getIdentifier(drawableName, "drawable", getPackageName());
img.setImageResource(resID);
但是使用这段代码,我需要将我的图像名称更改为 photo1
、photo2
,...我不想这样做。
关于如何实现它有什么建议吗?谢谢。
最佳答案
一种方法是创建一个包含所需图像 ID 的数组。并从该数组中随机取一个。其他答案中解释了这种方法。
另一种方法是在项目的 values
文件夹中创建文件 random_images_array.xml
并像这样填充它:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<array name="apptour">
<item>@drawable/image_1</item>
<item>@drawable/photo_2</item>
<item>@drawable/picture_4</item>
</array>
</resources>
然后您可以从该 xml 数组中获取随机图像:
final TypedArray imgs = getResources().obtainTypedArray(R.array.random_images_array);
final Random rand = new Random();
final int rndInt = rand.nextInt(imgs.length());
final int resID = imgs.getResourceId(rndInt, 0);
第三种方法是从 R.drawable 类中获取随机字段:
final Class drawableClass = R.drawable.class;
final Field[] fields = drawableClass.getFields();
final Random rand = new Random();
int rndInt = rand.nextInt(fields.length);
try {
int resID = fields[rndInt].getInt(drawableClass);
img.setImageResource(resID);
} catch (Exception e) {
e.printStackTrace();
}
关于android - 从android中的drawable文件夹随机生成图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15545753/