频道栏目
首页 > 程序开发 > 移动开发 > Android > 正文
Android图片优化,减少内存压力,提高app流畅度
2017-07-28 10:58:02         来源:baicai_12345的博客  
收藏   我要投稿
    Android图片优化,减少内存压力,提高app流畅度。先上一张效果图:

这里写图片描述
第一个图片是原比例大小加载
第二张图片是imageview缩小一半后的加载效果
第三章是我们使用代码优化过的图片加载效果
显而易见,缩小imageview是不能真正的减少内存消耗。
想要优化图片我们可以通过第三种方式,即通过android的BitmapFactory.Options来达到我们的目的。按照一定的比例对原始图片进行缩放,然后我们的ImageView加载缩放后的图片,这样就会降低内存占用从而在一定程度上从而在一定程度上避免OOM,提高Bitmap加载时候的性能(Android艺术探究);

BitmapFactory.Options有一个参数:inJustDecodeBounds,他的类型为boolean,当我们设置inJustDecodeBounds = true,表示解码时只返回bitmap的宽高,并不会将bitmap加载到内存中。
还有一个有关的参数inSampleSize,取值为1、2、4、6、8…(2的倍数),比如当inSampleSize == 2 时,宽高为原来的1/2, 像素为原来的1/4,内存占用为原来的1/4. 结论:宽高缩放为1/inSampleSize, 像素和内存为(1/inSampleSize的二次方)
代码实现:

public static Bitmap decodFromResource(Resources res, int resid, int reqWidth, int reqHeight) {
        final BitmapFactory.Options options = new BitmapFactory.Options();
        options.inJustDecodeBounds = true;
        BitmapFactory.decodeResource(res, resid, options);

        options.inSampleSize = calculateBitmapSize(options, reqWidth, reqHeight);
        options.inJustDecodeBounds = false;
        return BitmapFactory.decodeResource(res, resid, options);
    }


    //计算Bitmap大小
    public static int calculateBitmapSize(BitmapFactory.Options options, int reqWidth, int reqHeight) {
        final int width = options.outHeight;
        final int height = options.outHeight;
        int inSampleSize = 1;
        if (width > reqWidth || height > reqHeight) {
            final int halfWidth = width / 2;
            final int halfHeight = height / 2;
            while ((halfHeight / inSampleSize) >= reqHeight && (halfWidth / inSampleSize) >= reqWidth) {
                inSampleSize *= 2;
            }
        }
        return inSampleSize;
    }

完整的代码可以看我的github:https://github.com/luying6/BitmapConclusion/blob/master/app/src/main/java/com/bitmap/bitmapconclusion/BitmapLoadActivity.java
喜欢的可以star,后续会写一写图片压缩,编解码之类的,还有架构设计以及一些实用的小框架!

点击复制链接 与好友分享!回本站首页
上一篇:Android使用已有的sqlite数据库的方法
下一篇:MPAndroidChart3.0使用详解(一)----基本属性设置
相关文章
图文推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站