毕加索正在加载所有 phone 张照片的缩略图

Picasso loading thumbnails of all phone photos

我想显示我 phone 中的所有照片,并使用 Picasso 在 gridview 中显示它们。问题是我不知道如何实现这个。

我目前正在使用它来查询所有 phone 张照片:

Cursor cursor;
    String[] columns = new String[] {
            MediaStore.Images.ImageColumns._ID,
            MediaStore.Images.ImageColumns.TITLE,
            MediaStore.Images.ImageColumns.DATA};
    cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
            columns, null, null, null);
    int columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID);
    int columnPath = cursor.getColumnIndex(MediaStore.Images.Thumbnails.DATA);

并且 MediaStore.Images.Thumbnails.getThumbnail 获取缩略图的位图以注入到 ImageView。

我如何使用 Picasso 实现它?

很简单。只需使用 Uri.withAppendedPath 构建 URI,然后将其提供给 Picasso。后者将在内部使用其 MediaStoreRequestHandler 来获取正确的图像。

// Use the cursor you've defined (correctly)
int columnIndex = cursor.getColumnIndex(MediaStore.Images.Thumbnails._ID);
Uri imageURI = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(columnIndex));
Picasso
  .with(context)
  .load(imageURI)
  .fit()
  .centerInside()
  .into(imageView);