如何检查图像视图不包含相同的图像

时间:2014-05-10 15:17:57

标签: android for-loop random imageview

我有几个图像视图和几个图像要添加到布局,我随机添加它们,我需要确保两个图像视图不包含相同的图像...这是我的for循环动态添加图像到图像视图。

     Random random = new Random(System.currentTimeMillis());

        for(int v : imageViews) {

            ImageView iv = (ImageView)findViewById(v);
            iv.setImageResource(images[random.nextInt(images.length-1)]);

        }

我找到了一种方法,我将添加编辑代码:

     LinearLayout linearLayout1 = (LinearLayout) findViewById(R.id.bottomView);

        for(int x=0;x<images.length;x++) {
            Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),images[x]);

            int width = bitmapOrg.getWidth();
            int height = bitmapOrg.getHeight();
            int newWidth = 200;
            int newHeight = 200;

            float scaleWidth = ((float) newWidth) / width;
            float scaleHeight = ((float) newHeight) / height;

            Matrix matrix = new Matrix();

            matrix.postScale(scaleWidth, scaleHeight);
            matrix.postRotate(0);

            Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,
                          width, height, matrix, true);
            BitmapDrawable bmd = new BitmapDrawable(getResources(),resizedBitmap);

            ImageView imageView = new ImageView(this);
            imageView.setPadding(2, 0, 9, 5);
            imageView.setImageDrawable(bmd);
            imageView.setTag(x);

            imageView.setOnClickListener(new OnClickListener(){
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(Intent.ACTION_VIEW); 

                }
            });

            linearLayout1.addView(imageView);
        }

1 个答案:

答案 0 :(得分:3)

最简单的方法是将图像作为List&lt;&gt;而不是数组,并在循环开始之前调用Collections.shuffle(images, random)。这样,只要顺序选择图像,就可以保证不会重复。

这将是一个非常好的解决方案,特别是如果图像集合不是非常大(否则你可能会拖拽一个非常大的列表来选择它的一小部分)。

如果集合 大,那么您可以保留一个已经选择的位置的HashSet,并确保每次都选择一个新图像。