如何在 android studio 的 imageview 中随机化一组图像?
How to randomized a group of images in imageview in android studio?
我是 android 开发的初学者,我正在为我的项目创建一个类似 4Pics1Word 的游戏。 我想知道如何将图像按 4 随机化。每个活动必须有 4 张图像,并且这些图像必须相互关联,因此,4 张图片 1 个单词。 所以我'我想我可以在每个图像上放置 描述 ,然后将其随机化,然后使用控制语句来 get 那些具有匹配描述 的 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);
}
}
}
它所做的只是在列表中随机找到一张图片并检查它是否已被使用以及描述是否匹配。它会不断拉取随机图片,直到它尝试了所有图片或所有 ImageView 都被填满。我自己还没有尝试过,但代码应该可以工作。
另一个想法:将所有具有相同描述的图像放在它自己的数组列表中可能会更好。这样你就可以从所述数组列表中随机提取一张图片。例如:
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()));
}
我是 android 开发的初学者,我正在为我的项目创建一个类似 4Pics1Word 的游戏。 我想知道如何将图像按 4 随机化。每个活动必须有 4 张图像,并且这些图像必须相互关联,因此,4 张图片 1 个单词。 所以我'我想我可以在每个图像上放置 描述 ,然后将其随机化,然后使用控制语句来 get 那些具有匹配描述 的 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);
}
}
}
它所做的只是在列表中随机找到一张图片并检查它是否已被使用以及描述是否匹配。它会不断拉取随机图片,直到它尝试了所有图片或所有 ImageView 都被填满。我自己还没有尝试过,但代码应该可以工作。
另一个想法:将所有具有相同描述的图像放在它自己的数组列表中可能会更好。这样你就可以从所述数组列表中随机提取一张图片。例如:
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()));
}