安卓版本: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 的数组。并从该数组中随机取出一个。其他答案中解释了该方法。
另一种方法是创建文件random_images_array.xml
in values
您的项目的文件夹并按如下方式填充:
<?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();
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)