[英]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.