在Android的可绘制文件夹图像的随机genaration(random genaration o

2019-07-22 08:20发布

Android版本:4.2
我正在开发一个Android应用程序。 我需要随机生成的文件夹绘制的图像。 在我绘制我有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 ,...,我不想这样做。

关于如何实现它的任何建议? 谢谢。

Answer 1:

一种方法是创建所需的图像的ID的数组。 并采取从数组随机一个。 这种做法在其他的答案解释。

另一种方法是创建文件random_images_array.xmlvalues项目的文件夹,并填写像这样:

<?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();
}


Answer 2:

谈论你的问题 - 什么你真的想要吗?

如果你想显示在随机顺序图像比这将是最好的

        int resId[]={R.drawable.p1,R.drawable.p2,R.drawable.p2};
         Random rand = new Random();
         int index = rand.nextInt((resId.length- 1) - 0 + 1) + 0;

         imgView.setImageResource(resId[index]);

如果你想图像重新命名它的绝对文件路径,看到这篇文章的详细信息。



Answer 3:

怎么样

long[] res = {R.drawable.image1, R.drawable.image2};

要么

int[] res = {R.drawable.image1, R.drawable.image2};

 int rndInt = rand.nextInt(res .length);



img.setImageDrawable(getResources().getDrawable(res[rndInt]));


Answer 4:

ImageView img=(ImageView)findViewById(R.id.imageView1);
String[] imageArray = {"Image1", "Image2", etc..};
Random rand = new Random();

int rndInt = rand.nextInt(52) + 1;
int resID = getResources().getIdentifier(imageArray[rand], "drawable",  getPackageName());
img.setImageResource(resID);


Answer 5:

你一定要看到这个问题,或者也回答: -

随机从资源的Android字符串

但你不得不更换

textview.setText()

img.setImageResource(ran.nextInt(trivias.length)]);`


文章来源: random genaration of image from drawable folder in android