如何在android studio中的imageview中随机化一组图像?

时间:2017-03-09 04:08:25

标签: java android random imageview sharedpreferences

我是Android开发的初学者,我正在为我的项目创建一个类似4Pics1Word的游戏。 我想知道如何将图像随机化为4.每个活动必须有4个图像,这些图像必须相互关联,因此,4个图片1个单词。所以我在想我可以在每个图像上放置描述,然后将其随机化,然后使用控制语句以g 这些具有匹配描述的4张图片。我只需要随机化它以便随机化水平(因此每个应用程序将不具有相同的连续级别)。有任何想法吗?谢谢youuuu!

2 个答案:

答案 0 :(得分:1)

// In drwable folder your imagename like img_0,img_1,img_2.....img_N



     String imagename = "img_" + rnd.nextInt(N);// N is Maximum random number 
     imageView.setImageDrawable(
        getResources().getDrawable(getResourceID(imagename, "drawable",
            getApplicationContext()))
        );

答案 1 :(得分:1)

我会做这样的事情:

public void start() {
    MyImage[] images = /* a list of your images */
    ImageView[] imageViews = /* a list of your imageViews (in this case, 4)*/
    fillImageViews(/* the desc */, imageViews, images);
}




private class MyImage() {
    Drawable image;
    String desc;

    public MyImage(Drawable img, String description) {
        image = img;
        desc = description;

    }

}

public void fillImageViews(String desc, ImageView[] views, MyImage[] images) {
    ArrayList<Integer> usedIndexs = new ArrayList();
    Random rand = new Random();
    for (ImageView v : views) { 
        while (usedIndexs.size() < images.length) {
            int index = rand.nextInt(images.length);
            if (images[index].desc.equals(desc) && !usedIndexs.contains(index)) {
                //description matches
                v.setImageDrawable(images[index].image);
                usedIndexs.add(index);
                break;
            }
            usedIndexs.add(index);
        }
    }
}

所有这一切都是在列表中找到一张随机图片并检查它是否已被使用以及描述是否匹配。它将继续拉随机图片,直到它尝试了所有或所有的ImageViews填充。没有尝试过,但代码应该可以工作。

另一个想法:将所有相同描述的图像放在其自己的arraylist中可能会更好。这样你就可以从所述的arraylist中随机抽取图片。例如:

ArrayList<Drawable> catPics = new ArrayList();
//add cat pics here
ArrayList<Drawable> dogPics = new ArrayList();
//add dogs pics here

//And now you could make function to pull the pictures
public Drawable getRandomPicture(ArrayList<Drawable> imgs) {
    return imgs.get(new Random.nextInt(imgs.size()));
}