android - 从android中的drawable文件夹随机生成图像

标签 android image random

安卓版本: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);

但是使用这段代码,我需要将我的图像名称更改为 photo1photo2,...我不想这样做。

关于如何实现它有什么建议吗?谢谢。

最佳答案

一种方法是创建一个包含所需图像 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/

相关文章:

java - Android NoSuchElementException 和扫描仪

ios - 从 url 中提取的图像未出现在 UIImageView 上

java - 循环以随机显示数组中的图像(Android)

Android studio 无法安装 - 无法获取 addons_list-2.xml

android - Android Q 上的内部崩溃

java - 如何将 BMP 图像转换为 8 位灰度图像

python - 来自单个种子的多个独立随机数流

python - 这真的会生成随机 float 吗? (Python)

android - 如何使管道符号或 Grep 在 Android 进程运行时命令中工作?

PHP:如何检查图像文件是否存在?