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