使用Picasso的Android ImageView仅在5.1.1

时间:2015-08-14 08:18:41

标签: android imageview picasso

我展示了一个带有ImageView的GridView对话框,用于选择个人资料图片。我从本地存储中拍照。我使用Picasso Library来显示图像。

我的问题是ImageViews只显示这样的白色屏幕。

Here is the result

它仅在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);
        }

我四处寻找,但我没有看到这个问题。请帮我。感谢。

2 个答案:

答案 0 :(得分:0)

尝试从文件加载而不是像

这样的uri
Picasso.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);