我展示了一个带有ImageView的GridView对话框,用于选择个人资料图片。我从本地存储中拍照。我使用Picasso Library来显示图像。
我的问题是ImageViews只显示这样的白色屏幕。
它仅在5.1.1版本中出现。不在4.x.x和5.1.2中。
我还没有在5.x.x中测试过低于5.1.1。
这是我的代码来获取图片网址
private List<String> getListofImage() {
List<String> imgList = new ArrayList<>();
String[] projection = {MediaStore.Images.Media.DATA};
// content:// style URI for the "primary" external storage volume
Uri images = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
// Make the query.
Cursor cur = getContentResolver().query(images,
projection, // Which columns to return
null, // Which rows to return (all rows)
null, // Selection arguments (none)
null // Ordering
);
Log.i("ListingImages", " query count=" + cur.getCount());
if (cur.moveToFirst()) {
int column_index = cur.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
do {
// Get the field values
cur.getString(column_index);
// Do something with the values.
Log.i("ListingImages", " bucket=" + cur.getString(column_index)
+ " date_taken=" + "");
imgList.add(cur.getString(column_index));
} while (cur.moveToNext());
}
return imgList;
}
以下是示例图片网址
/storage/emulated/0/DCIM/Camera/IMG_20150807_191201.jpg
这是我的适配器的代码
if (mImageList.get(i).contains("/storage")) {
Uri uri = Uri.fromFile(new File(mImageList.get(i)));
Picasso.with(RegisterActivity.this)
.load(uri)
.resize(512, 512)
.centerCrop()
.into(vh.imageView);
} else {
Picasso.with(RegisterActivity.this)
.load(mImageList.get(i))
.into(vh.imageView);
}
我四处寻找,但我没有看到这个问题。请帮我。感谢。
答案 0 :(得分:0)
尝试从文件加载而不是像
这样的uriPicasso.with(RegisterActivity.this)
.load(new File(mImageList.get(i)))
.resize(512, 512)
.centerCrop()
.into(vh.imageView);
答案 1 :(得分:0)
尝试通过uri引用图像文件时添加前缀file://
:
Picasso.with(RegisterActivity.this)
.load(new File("file://"+mImageList.get(i)))
.into(vh.imageView);
或
Picasso.with(RegisterActivity.this)
.load("file://"+mImageList.get(i))
.into(vh.imageView);