java - 使用random时如何让每个ImageView显示不同的图片?安卓工作室

标签 java android image android-activity imageview

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

这是我的代码:

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

            }
        });

最佳答案

这是我的答案,其他尝试仅显示 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()));

                        }
                    });

您也不必更改太多代码即可使其正常工作;) 抱歉,我把所有东西都挤在一行里。但我真的很累,因为在德国已经快午夜了。

关于java - 使用random时如何让每个ImageView显示不同的图片?安卓工作室,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831092/

相关文章:

java - Android MediaPlayer 在 Android 6.0 Marshmallow 上崩溃

java - 在 docker 上运行 java 代码

android - 在 Android Studio 的发布版本中启用 LogCat

android - 我正在尝试在 tablayout 中添加动态标题,但基于该标题我想显示不同的产品

java - 如何在Java中将图像转换为形状?

java - 如何在 Ant echo 中转义特殊字符(在 xml 中无效)?

Android:对两种算法进行基准测试

java - 无法从源输入生成相同的输出图像

swift - 在 Swift 3 中转换图像

java - 如何基于 HTTP 连接测试代码