繁体   English   中英

如何从随机数组列表设置imageview的背景资源?

[英]How to set background resource of imageview from a randomized arraylist?

我想做的是,我将从ArrayList中填充此布局中的12个星星,但每个星星都处于随机位置,在drawable中使用随机星星。

我有6个独特的星星(蓝色,绿色,橙色,红色,紫色,黄色),每一个都可以重复复制12个。

*函数shuffle()放在onCreate里面。

版面:

在此处输入图片说明

代码:

List<Integer> imageViews = new ArrayList<Integer>();
List<Integer> images = new ArrayList<Integer>();


public void viewadd()
{
    imageViews.add(R.id.star1);
    imageViews.add(R.id.star2);
    imageViews.add(R.id.star3);
    imageViews.add(R.id.star4);
    imageViews.add(R.id.star5);
    imageViews.add(R.id.star6);
    imageViews.add(R.id.star7);
    imageViews.add(R.id.star8);
    imageViews.add(R.id.star9);
    imageViews.add(R.id.star10);
    imageViews.add(R.id.star11);
    imageViews.add(R.id.star12);
}



public void imageadd()
{
    images.add(R.drawable.blue);
    images.add(R.drawable.green);
    images.add(R.drawable.orange);
    images.add(R.drawable.red);
    images.add(R.drawable.violet);
    images.add(R.drawable.yellow);
    images.add(R.drawable.blue);
    images.add(R.drawable.green);
    images.add(R.drawable.orange);
    images.add(R.drawable.red);
    images.add(R.drawable.violet);
    images.add(R.drawable.yellow);

}



public void shuffle()
    {
            // TODO Auto-generated method stub

             imageadd();
                viewadd();


               Random rng = new Random(); 
                List<Integer> generated = new ArrayList<Integer>();
                for (int i = 0; i < 12; i++)
                {
                  while(true)
                    {

                      Integer next = rng.nextInt(imageViews.size()) ;
                      if (!generated.contains(next))
                        {
                         generated.add(next);
                         ImageView iv = (ImageView)findViewById(imageViews.get(next));
                         iv.setBackgroundResource(images.get(next));
                         images.remove(next);
                         imageViews.remove(next);
                         break;
                        }

                    }

                }
         }

首先创建您要使用的图像List

List<Drawable> listOfDrawable = new ArrayList<Drawable>() ;

然后,只需在列表中填写要使用的可绘制对象即可。

Java Collections Framework确实为您提供了一种方便的方法来混合一个集合,就像这样

Collections.shuffle(listOFDrawalble)注意:Collections中的“ s”。

那么您就会获得一张随机的图像列表。

单击此处以了解有关此实用程序类的更多信息

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM