Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
android中drawable文件夹中图像的随机生成_Android_Image_Random - Fatal编程技术网

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

android中drawable文件夹中图像的随机生成,android,image,random,Android,Image,Random,安卓版本:4.2 我正在开发一个android应用程序。我需要从可绘制文件夹生成随机图像。在我的绘图设备中,我有45个不同名称的图像。 我的xml代码是: <ImageView android:id="@+id/imageView1" android:layout_width="wrap_content" android:layout_height="wrap_content" /> 但是有了这段代码,我需要将我的图像名称更改为photo1,photo2。。。我不想这么做 有没有关

安卓版本:4.2
我正在开发一个android应用程序。我需要从可绘制文件夹生成随机图像。在我的绘图设备中,我有45个不同名称的图像。 我的xml代码是:

<ImageView
android:id="@+id/imageView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
/>
但是有了这段代码,我需要将我的图像名称更改为
photo1
photo2
。。。我不想这么做

有没有关于如何实施的建议?谢谢。

怎么样

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


你还必须看到这个问题或答案:-

但你必须替换

textview.setText()


一种方法是使用所需的映像ID创建一个数组。从数组中随机抽取一个。其他答案解释了这种方法

另一种方法是在项目的
values
文件夹中创建文件
random\u images\u 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>
第三种方法是从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();
}

明确你的问题——你到底想做什么

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

        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]);

如果您希望图像的绝对文件路径重命名它,请参阅以获取详细信息。

我发现设置一个包含所有可绘制内容的数组,然后通过一个随机数获得一个随机索引是可行的

public int[] Images = {R.drawable.1, R.drawable.2, R.drawable.3};
然后

ImageView EightBallImage = findViewById(R.id.EightBallImage);
EightBallImage.setImageResource(Images[new Random().nextInt(Images.length)]);

在click监听器内或仅在onCreate方法中

Thanq ngesh。我遵循了ur代码,但它向我显示了此错误:类型ImageView中的方法setImageResource(int)不适用于参数(long)thanq vasart..第三种形式非常适合我。非常感谢。:)嗨,vasart..有什么方法可以获得随机选择的字段吗?我是说图像名称???是的,你可以这样做:
fields[rndInt].getName()
hi vasart..有什么方法可以将异常设置为某些图像不应包含在随机选择中????
<?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>
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);
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();
}
        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]);
public int[] Images = {R.drawable.1, R.drawable.2, R.drawable.3};
ImageView EightBallImage = findViewById(R.id.EightBallImage);
EightBallImage.setImageResource(Images[new Random().nextInt(Images.length)]);