Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.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
Java 使用“随机”时,每个ImageView如何显示不同的图片?安卓工作室_Java_Android_Image_Android Activity_Imageview - Fatal编程技术网

Java 使用“随机”时,每个ImageView如何显示不同的图片?安卓工作室

Java 使用“随机”时,每个ImageView如何显示不同的图片?安卓工作室,java,android,image,android-activity,imageview,Java,Android,Image,Android Activity,Imageview,我随机设置了4张图片,但当我测试出来时,结果显示相同的图片。我希望每个图像视图显示不同于其他视图的图像 这是我的代码: final ImageButton imageButton=(ImageButton) findViewById(R.id.imageView); imageButton.setOnClickListener(new View.OnClickListener() { @Override public void o

我随机设置了4张图片,但当我测试出来时,结果显示相同的图片。我希望每个图像视图显示不同于其他视图的图像

这是我的代码:

 final ImageButton imageButton=(ImageButton) findViewById(R.id.imageView);
        imageButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                imageButton.setVisibility(View.INVISIBLE);
                pic1 = (ImageView) findViewById(R.id.imageView2);
                pic2 = (ImageView) findViewById(R.id.imageView3);
                pic3 = (ImageView) findViewById(R.id.imageView4);
                pic4 = (ImageView) findViewById(R.id.imageView5);

                Random rand = new Random();
                int rndInt = rand.nextInt(4) + 1;
                String imgName = "img" + rndInt;
                int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
                pic1.setImageResource(id);
                pic2.setImageResource(id);
                pic3.setImageResource(id);
                pic4.setImageResource(id);

            }
        });

这是相同的图像,因为“id”只设置一次,要获得差异id,您必须生成更多的随机数。您需要给rand.nextInt(4)打四次电话。每个“.setImageResource(id)”后一次

只是给你一个想法

Random rand = new Random();
int rndInt = rand.nextInt(4) + 1;
String imgName = "img" + rndInt;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
pic1.setImageResource(id);
//Here you re-generate a random number
rndInt = rand.nextInt(4) + 1;
imgName = "img" + rndInt;
id = getResources().getIdentifier(imgName, "drawable", getPackageName());
pic2.setImageResource(id);

这是相同的图像,因为“id”只设置一次,要获得差异id,您必须生成更多的随机数。您需要给rand.nextInt(4)打四次电话。每个“.setImageResource(id)”后一次

只是给你一个想法

Random rand = new Random();
int rndInt = rand.nextInt(4) + 1;
String imgName = "img" + rndInt;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
pic1.setImageResource(id);
//Here you re-generate a random number
rndInt = rand.nextInt(4) + 1;
imgName = "img" + rndInt;
id = getResources().getIdentifier(imgName, "drawable", getPackageName());
pic2.setImageResource(id);

查看您的代码,您用相同的图像替换所有4张图片(例如“img1”或“img2”或“img3”或“img4”)

如果您想用不同的图片替换4张图片,只需调用:

int rndInt = rand.nextInt(4) + 1;
String imgName = "img" + rndInt;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
每次将资源id分配给ImageView之前

创建一个函数,例如:

private int getRandomImage() {
    int rndInt = rand.nextInt(4) + 1;
    String imgName = "img" + rndInt;
    return getResources().getIdentifier(imgName, "drawable", getPackageName());
}
并调用每个ImageView

pic1.setImageResource(getRandomImage());
pic2.setImageResource(getRandomImage());
pic3.setImageResource(getRandomImage());
pic4.setImageResource(getRandomImage());
编辑:

如果希望有4个不同的图像,可以使用以下命令更改getRandomImage()

List listImageUsed=new ArrayList();
私有int getRandomImage(){
内力;
做{
rndInt=rand.nextInt(4)+1;
}而(!listImageUsed.contains(rndInt));
listImageUsed.add(rndInt);
字符串imgName=“img”+rndInt;
返回getResources().getIdentifier(imgName,“drawable”,getPackageName());
}

查看您的代码,将所有4张图片替换为相同的图像(例如“img1”或“img2”或“img3”或“img4”)

如果您想用不同的图片替换4张图片,只需调用:

int rndInt = rand.nextInt(4) + 1;
String imgName = "img" + rndInt;
int id = getResources().getIdentifier(imgName, "drawable", getPackageName());
每次将资源id分配给ImageView之前

创建一个函数,例如:

private int getRandomImage() {
    int rndInt = rand.nextInt(4) + 1;
    String imgName = "img" + rndInt;
    return getResources().getIdentifier(imgName, "drawable", getPackageName());
}
并调用每个ImageView

pic1.setImageResource(getRandomImage());
pic2.setImageResource(getRandomImage());
pic3.setImageResource(getRandomImage());
pic4.setImageResource(getRandomImage());
编辑:

如果希望有4个不同的图像,可以使用以下命令更改getRandomImage()

List listImageUsed=new ArrayList();
私有int getRandomImage(){
内力;
做{
rndInt=rand.nextInt(4)+1;
}而(!listImageUsed.contains(rndInt));
listImageUsed.add(rndInt);
字符串imgName=“img”+rndInt;
返回getResources().getIdentifier(imgName,“drawable”,getPackageName());
}

这是我的回答,其他尝试只显示4个不同的图像。我的解决方案规定,图像是随机的且不完全相同:

            final ImageButton imageButton=(ImageButton) findViewById(R.id.imageView);
                    imageButton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            imageButton.setVisibility(View.INVISIBLE);
                            pic1 = (ImageView) findViewById(R.id.imageView2);
                            pic2 = (ImageView) findViewById(R.id.imageView3);
                            pic3 = (ImageView) findViewById(R.id.imageView4);
                            pic4 = (ImageView) findViewById(R.id.imageView5);

                            ArrayList<Integer> imageIds= new ArrayList<>(Arrays.asList(1, 2, 3, 4))
                            Collections.shuffle(imageIds);

                            pic1.setImageResource(getResources().getIdentifier("img" + imageIds[0], "drawable", getPackageName()));
                            pic2.setImageResource(getResources().getIdentifier("img" + imageIds[1], "drawable", getPackageName()));
                            pic3.setImageResource(getResources().getIdentifier("img" + imageIds[2], "drawable", getPackageName()));
                            pic4.setImageResource(getResources().getIdentifier("img" + imageIds[3], "drawable", getPackageName()));

                        }
                    });
final ImageButton ImageButton=(ImageButton)findViewById(R.id.imageView);
imageButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
imageButton.setVisibility(视图不可见);
pic1=(ImageView)findViewById(R.id.imageView2);
pic2=(ImageView)findViewById(R.id.imageView3);
pic3=(ImageView)findViewById(R.id.imageView4);
pic4=(ImageView)findViewById(R.id.imageView5);
ArrayList ImageId=新的ArrayList(Arrays.asList(1,2,3,4))
集合。洗牌(ImageID);
pic1.setImageResource(getResources().getIdentifier(“img”+ImageID[0],“drawable”,getPackageName());
pic2.setImageResource(getResources().getIdentifier(“img”+ImageID[1],“drawable”,getPackageName());
pic3.setImageResource(getResources().getIdentifier(“img”+ImageID[2],“drawable”,getPackageName());
pic4.setImageResource(getResources().getIdentifier(“img”+ImageID[3],“drawable”,getPackageName());
}
});
而且,您不必对代码进行太多更改,就可以使其正常工作;)
对不起,我把所有东西都装在一行里了。但我真的很累,因为在德国几乎是午夜了。

这是我的回答,其他尝试只显示了4个不同的图像。我的解决方案规定,图像是随机的且不完全相同:

            final ImageButton imageButton=(ImageButton) findViewById(R.id.imageView);
                    imageButton.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) {
                            imageButton.setVisibility(View.INVISIBLE);
                            pic1 = (ImageView) findViewById(R.id.imageView2);
                            pic2 = (ImageView) findViewById(R.id.imageView3);
                            pic3 = (ImageView) findViewById(R.id.imageView4);
                            pic4 = (ImageView) findViewById(R.id.imageView5);

                            ArrayList<Integer> imageIds= new ArrayList<>(Arrays.asList(1, 2, 3, 4))
                            Collections.shuffle(imageIds);

                            pic1.setImageResource(getResources().getIdentifier("img" + imageIds[0], "drawable", getPackageName()));
                            pic2.setImageResource(getResources().getIdentifier("img" + imageIds[1], "drawable", getPackageName()));
                            pic3.setImageResource(getResources().getIdentifier("img" + imageIds[2], "drawable", getPackageName()));
                            pic4.setImageResource(getResources().getIdentifier("img" + imageIds[3], "drawable", getPackageName()));

                        }
                    });
final ImageButton ImageButton=(ImageButton)findViewById(R.id.imageView);
imageButton.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
imageButton.setVisibility(视图不可见);
pic1=(ImageView)findViewById(R.id.imageView2);
pic2=(ImageView)findViewById(R.id.imageView3);
pic3=(ImageView)findViewById(R.id.imageView4);
pic4=(ImageView)findViewById(R.id.imageView5);
ArrayList ImageId=新的ArrayList(Arrays.asList(1,2,3,4))
集合。洗牌(ImageID);
pic1.setImageResource(getResources().getIdentifier(“img”+ImageID[0],“drawable”,getPackageName());
pic2.setImageResource(getResources().getIdentifier(“img”+ImageID[1],“drawable”,getPackageName());
pic3.setImageResource(getResources().getIdentifier(“img”+ImageID[2],“drawable”,getPackageName());
pic4.setImageResource(getResources().getIdentifier(“img”+ImageID[3],“drawable”,getPackageName());
}
});
而且,您不必对代码进行太多更改,就可以使其正常工作;)
对不起,我把所有东西都装在一行里了。但我真的很累,因为在德国已经快午夜了。

比我的答案更有效,用这个方法。谢谢@FredL!但是你提供了一个快5秒的答案:)对不起,我很挑剔,但是自动售货机想要4张不同的图片,而不是4张随机图片