Android图片加载那些事(一)-实现加载手机中的所有图片

前言

最近实验室的项目需要实现–在手机与单反的wifi连接之后,加载单反中的图片.这其中就涉及到我们在Android开发中经常遇到的功能-图片加载.
关于图片加载,不同程度的实现也会遇到不同程度的问题
可能起初我们只是想加载出来一张图片,这个问题很好解决.
后来我们可能还要加载大量的图片(几百KB的那种)到页面上,这个也不是很难…
但是如果想要优雅的做好符合用户体验的图片加载,如何做好缓存.下拉刷新…都是需要做的.

所以最近会写一些关于图片加载的系列博文,希望对大家有所帮助,

前两天做了一个demo,试了试加载手机里的所有图片,算作这个系列的开端.

效果图


这是加了日期分组的效果,这个我们下一篇再讲怎么把按照日期分组的.
查找手机里所有图片的 关键代码:

/**
     * 查询手机里所有的图片
     */
    public void initAllImgInThePhone() {

        String[] projection = {
                MediaStore.Images.Media.DATA,
                MediaStore.Images.Media.DISPLAY_NAME,
                MediaStore.Images.Media.SIZE
        };
        //全部图片
        String where = MediaStore.Images.Media.MIME_TYPE + "=? or "
                + MediaStore.Images.Media.MIME_TYPE + "=? or "
                + MediaStore.Images.Media.MIME_TYPE + "=?";
        //指定格式
        String[] whereArgs = {"image/jpeg", "image/png", "image/jpg"};
        //查询
        Cursor cursor = getContext().getContentResolver().query(
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, where, whereArgs,
                MediaStore.Images.Media.DATE_MODIFIED + " desc ");
        List<String> dateList = new ArrayList<>();//存放图片的路径
        while (cursor.moveToNext()) {
        	String fileName = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DISPLAY_NAME))//获取图片名.
        	long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE));//获取文件大小.
            byte[] data = cursor.getBlob(cursor.getColumnIndex(MediaStore.Images.Media.DATA));//图片在手机里的路径
            String dataStr = new String(data, 0, data.length - 1);//路径转换成字符串
            File file = new File(dataStr);
            long time = file.lastModified(); //记录此图片的上次修改时间
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
            String dateStr = sdf.format(time); // 2019-04-10
           
        }
    }

通过contentResolver内容提供器,轻松获得所有自己想要的格式的图片,接下来如何加载到屏幕上大家应该都知道.

  1. 在把每个图片的路径放到list中.
  2. 把list传给adapter
  3. 在adapter的onBindViewHolder中,通过图片路径加载图片到对应的ImageView中.

如果还有不清楚的地方,可以到我的仓库查看全部源码>图片加载.
(完~)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值