[关闭]
@Tyhj 2016-12-20T04:03:58.000000Z 字数 1422 阅读 1587

Android自定义展示图库图片终极解决方案

Android


Tyhj

原文:https://www.zybuluo.com/Tyhj/note/606822

参考:http://blog.csdn.net/qq_22770457/article/details/51492937

展示图库我也做过,用的是一个比较流行的图片加载工具,我的手机倒是没问题,但是在我同学那个垃圾魅蓝上还是OOM了,之前也没有管太多,今天又要用到,我就想了一下,之前我获取手机联系人头像的时候是可以获取缩略图的,那么图库应该也有吧,我网上查了一下果然有,那么再配合图片加载工具就简单了呀。获取方法如下:

  1. /**
  2. * 得到本地图片文件
  3. * @param context
  4. * @return
  5. */
  6. public static ArrayList<HashMap<String,String>> getAllPictures(Context context) {
  7. ArrayList<HashMap<String,String>> picturemaps = new ArrayList<>();
  8. HashMap<String,String> picturemap;
  9. ContentResolver cr = context.getContentResolver();
  10. //先得到缩略图的URL和对应的图片id
  11. Cursor cursor = cr.query(
  12. Thumbnails.EXTERNAL_CONTENT_URI,
  13. new String[]{
  14. Thumbnails.IMAGE_ID,
  15. Thumbnails.DATA
  16. },
  17. null,
  18. null,
  19. null);
  20. if (cursor.moveToFirst()) {
  21. do {
  22. picturemap = new HashMap<>();
  23. picturemap.put("image_id_path",cursor.getInt(0)+"");
  24. picturemap.put("thumbnail_path",cursor.getString(1));
  25. picturemaps.add(picturemap);
  26. } while (cursor.moveToNext());
  27. cursor.close();
  28. }
  29. //再得到正常图片的path
  30. for (int i = 0;i<picturemaps.size();i++) {
  31. picturemap = picturemaps.get(i);
  32. String media_id = picturemap.get("image_id_path");
  33. cursor = cr.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
  34. new String[]{
  35. MediaStore.Images.Media.DATA
  36. },
  37. MediaStore.Audio.Media._ID+"="+media_id,
  38. null,
  39. null
  40. );
  41. if (cursor.moveToFirst()) {
  42. do {
  43. picturemap.put("image_id_path",cursor.getString(0));
  44. picturemaps.set(i,picturemap);
  45. } while (cursor.moveToNext());
  46. cursor.close();
  47. }
  48. }
  49. return picturemaps;
  50. }

注意

其实在参考文章中楼主写错了的,仔细对照我的
thumbnail_path为缩略图
image_id_path为原图

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注