Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/398.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在android studio中随机化imageview中的一组图像?_Java_Android_Random_Imageview_Sharedpreferences - Fatal编程技术网

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

Java 如何在android studio中随机化imageview中的一组图像?,java,android,random,imageview,sharedpreferences,Java,Android,Random,Imageview,Sharedpreferences,我是android开发的初学者,我正在为我的项目创建一个类似4Pics1Word的游戏我想知道如何在4之前将图像随机化。每个活动必须有4个图像,这些图像必须相互关联,因此,4张图片1个单词。因此我想我可以在每个图像上放置描述,然后将其随机化,然后使用控制语句,以便用匹配的描述来设置这4张图片。我只需要随机化它,以随机化的水平(因此,每个应用程序将不会有相同的连续水平)。有什么想法吗?谢谢你 我会这样做: // In drwable folder your imagename like img_0

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

我会这样做:

// 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()))
        );
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);
        }
    }
}
public void start(){
MyImage[]images=/*您的图像列表*/
ImageView[]ImageView=/*您的ImageView列表(在本例中为4)*/
FillImageView(/*描述*/,图像视图,图像);
}
私有类MyImage(){
可绘制图像;
字符串描述;
公共MyImage(可绘制的img,字符串描述){
图像=img;
desc=描述;
}
}
public void fillImageView(字符串描述、ImageView[]视图、MyImage[]图像){
ArrayList usedIndex=新的ArrayList();
Random rand=新的Random();
对于(ImageView v:视图){
while(usedIndex.size()
它所做的只是在列表中找到一张随机图片,然后检查它是否已经被使用,以及描述是否匹配。它将继续随机抽取图片,直到尝试了所有图片或所有图像视图都被填充。我自己还没有试过,但代码应该可以用

另一个想法:最好将相同描述的所有图像都放在自己的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()));
}
ArrayList catPics=new ArrayList();
//在这里添加猫图片
ArrayList dogPics=新的ArrayList();
//在这里添加狗图片
//现在你可以做一个函数来拉图片了
公共可绘制getRandomPicture(ArrayList imgs){
返回imgs.get(new Random.nextInt(imgs.size());
}

我会这样做:

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);
        }
    }
}
public void start(){
MyImage[]images=/*您的图像列表*/
ImageView[]ImageView=/*您的ImageView列表(在本例中为4)*/
FillImageView(/*描述*/,图像视图,图像);
}
私有类MyImage(){
可绘制图像;
字符串描述;
公共MyImage(可绘制的img,字符串描述){
图像=img;
desc=描述;
}
}
public void fillImageView(字符串描述、ImageView[]视图、MyImage[]图像){
ArrayList usedIndex=新的ArrayList();
Random rand=新的Random();
对于(ImageView v:视图){
while(usedIndex.size()
它所做的只是在列表中找到一张随机图片,然后检查它是否已经被使用,以及描述是否匹配。它将继续随机抽取图片,直到尝试了所有图片或所有图像视图都被填充。我自己还没有试过,但代码应该可以用

另一个想法:最好将相同描述的所有图像都放在自己的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()));
}
ArrayList catPics=new ArrayList();
//在这里添加猫图片
ArrayList dogPics=新的ArrayList();
//在这里添加狗图片
//现在你可以做一个函数来拉图片了
公共可绘制getRandomPicture(ArrayList imgs){
返回imgs.get(new Random.nextInt(imgs.size());
}

谢谢。但是我需要有一组4张相关的图片来随机分组。让我们假设我的游戏有5个活动。每个活动由4张相互关联的图片组成。所以我要用20张照片。这20张图片将被5除。每组有4张相互关联的图片。那么,我该如何对这些图片组进行随机分组呢?同样的概念,您应用了所有活动,但在活动中更改了图像名称..例如,如果我只想在活动A中显示苹果图像,则意味着您的图像名称应该与apple_0..apple_5..随机数5..然后是imagename=“apple_”+rnd.nextInt(N)谢谢。但是我需要有一组4张相关的图片来随机分组。让我们假设我的游戏有5个活动。每个活动由4张相互关联的图片组成。所以我要用20张照片。这20张图片将被5除。每组有4张相互关联的图片。那么我该如何对这些图片组进行随机分组呢?同样的概念,你应用了所有活动,但在活动中更改了图像名称。例如,如果我只想在活动A中显示苹果图像,则意味着你的图像名称应该像苹果0。苹果5。随机数5…然后imagename=“苹果”+rnd.nextInt(N)你尝试过什么吗?如果你有,那么在你的问题上提到它,并告诉你哪一步失败了。我们很多人都想帮助你,但请阅读。无论如何,欢迎来到StackOverflow:)你试过什么吗?如果你有,那么在你的问题上提到它,并告诉你哪一步失败了。我们很多人都想帮助你,但请阅读。无论如何,欢迎来到StackOverflow:)嘿!非常感谢你!我试试看嘿!非常感谢你!