我需要从用户的照片库中随机选择一张图片。我并不是指在
中启动意图Intent gallery = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(gallery, GALLERY_PHOTO_REQUEST_CODE);
没有。我需要自己随机选择图像。有没有一种有效的方法来做到这一点?或者我是否必须实际读入所有图像文件,然后随机选择一个文件,然后从文件中获取图像?通过阅读所有文件,我的意思是(片段:我有一个问题而不是答案)
void addFiles(final File parent, Set<File> images) {
try {
for (final File file : parent.listFiles()) {
if (!file.getParent().contains("Android")) {
if (!file.isDirectory()) {
if (isImageFile(file.getName())) {
images.add(file);
}
} else {
addFiles(file, images);
}
}
}
} catch (Exception e) {
}
}
请不要太在意代码段。如果我知道最好的方法,我就不会寻求帮助。有谁知道这样做的有效方法?
答案 0 :(得分:0)
除了片段之外,我不知道你的代码。除非您拥有大量文件,否则您可以很好地将所有文件读入数组。然后生成一个随机数,其中0表示最低,arrayList.size() - 1表示最高,并从数组中获取该索引。
伪代码:
private static Random random = new Random();
ArrayList<File> list = readFiles();
File randomFile = list.get(getRandomValue(0, list.size()-1));
...
public static int getRandomValue(int low, int high) {
return random.nextInt((high - low) + 1) + low;
}