【发布时间】:2015-12-07 22:45:28
【问题描述】:
我有一个 android 应用程序,它从我的外部存储中生成 3 个随机图像。然后将我得到的随机图像设置为正在工作的 Imageview。问题是我不想查看每张图片,而只是从外部文件夹中的一个特定文件夹中获取随机图像。如何更改代码以获取此信息?
public class SuggestedOutfit extends AppCompatActivity{
public ImageView shirts;
public ImageView pants;
public ImageView shoes;
Button reload;
private Bitmap currentBitmap = null;
String[] projection = new String[]{
MediaStore.Images.Media.DATA,
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.suggested_outfit);
shirts = (ImageView)findViewById(R.id.shirtImage);
pants = (ImageView)findViewById(R.id.pantsImage);
shoes = (ImageView)findViewById(R.id.shoesImage);
shirts.setImageBitmap(getImage());
pants.setImageBitmap(getImage());
shoes.setImageBitmap(getImage());
reload = (Button)findViewById(R.id.getNewOutfit);
reload.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
finish();
startActivity(getIntent());
}
});
}
public Bitmap getImage () {
Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
Cursor cur = getContentResolver().query(images,
projection,"", null, ""
);
final ArrayList<String> imagesPath = new ArrayList<String>();
if (cur.moveToFirst()) {
int dataColumn = cur.getColumnIndex(
MediaStore.Images.Media.DATA);
do {
imagesPath.add(cur.getString(dataColumn));
} while (cur.moveToNext());
}
cur.close();
final Random random = new Random();
final int count = imagesPath.size();
int number = random.nextInt(count);
String path = imagesPath.get(number);
currentBitmap = BitmapFactory.decodeFile(path);
return currentBitmap;
}
}
【问题讨论】:
-
我不明白这个问题。从我可以从您的代码中看出,您正在做正确的事情。示例,1. 获取所有图像 URI。 2.随机选择一个。 3. 重复步骤 2 所需的次数。
-
@Squonk 是的,但我正在获取外部文件夹中的所有图片。我只想从外部文件夹中的“/Pictures/Wardrobe”中获取随机图像,但我不知道如何更改代码来获取它。
-
我的链接前三个答案解决了你的问题
-
@ColinGillespie 是的,这个问题可能会帮助我显示整个文件夹,我也需要这样做,但是对于这个问题,我只需要选择 3 个随机图像并显示。不知道如何更改该代码
标签: android random android-external-storage