为了账号安全,请及时绑定邮箱和手机立即绑定
  • png没有压缩,jpeg压缩,webp是理想选择

    查看全部
    0 采集 收起 来源:图片OOM

    2019-03-06

  • 如截图所示

    查看全部
    0 采集 收起 来源:图片OOM

    2019-03-06

  • 与手机内存没有关系,超出系统给应用的最大限制就会溢出

    查看全部
    0 采集 收起 来源:图片OOM

    2019-03-06

  • 见截图所示

    查看全部
    0 采集 收起 来源:课程介绍

    2019-03-06

  • 54564554


    https://img1.sycdn.imooc.com//5c665d190001c0b619201080.jpg

    https://img1.sycdn.imooc.com//5c665d1a0001a71019201080.jpg


    查看全部
  • https://img1.sycdn.imooc.com//5c665b8c0001d30405040461.jpg32222222222

    查看全部
  • https://img1.sycdn.imooc.com//5c665a9f000137f107520463.jpg撒旦撒旦撒旦撒旦

    查看全部
  • 超大图片

    1.使用BitmapRegionDecoder.decodeRegion()来实现

    public Bitmap decodeRegion(Rect rect, BitmapFactory.Options options);

    2.通常的做法是

    (1)定义一个View来显示这张图,在onMeasure()中创建一个和View一样大小的Rect,用来作为decodeRegion()的参数

    int width = getMeasuredWidth();
    int height = getMeasuredHeight();//View宽和高
    
    int imgWidth = mImgWidth;
    int imgHeight = mImgHeight; //图片宽和高, 通过BitmapFactory.decodeFile(..., options)可以拿到,当然options.inJustDecodeBounds = true
    
    //获取rect的左右上下边界, 默认是显示图片的中心区域
    mRect.left = imgWidth/2 - width/2;
    mRect.top = imgHeight/2 - height/2;
    mRect.right = imgWidth/2 + width/2;
    mRect.bottom = imgHeight/2 + height/2;

    (2)在自定义View的onDraw()方法中将decodeRegion()得到的bitmap进行绘制到View上

    (3)这个View还需要实现OnGestureListener接口,实现自己的move()函数,其实主要是改变这个Rect。然后调用invalidate()从decodeRegion(rect, ...)中拿到新的bitmap(可能只是一个小区域),再进行draw(bitmap, ...);

    查看全部
  • 图片OOM问题

    OOM是指Android系统允许进程运行时所使用的内存,和手机本身系统没有关系。

    1. 产生

    (1)一个页面一次加载过多图片。虽然每个图片的bitmap占用内存较小,但是如果图片过多也会oom

    (2)加载大图片没有进行压缩

    (3)类似ListView这种先后使用bitmap,但是先前的没有进行缓存。

    2.解决

    (1)尺寸压缩:通过增大inSampleSize来压缩

    BitmapFactory.Options.inSampleSize

    (2)质量压缩:减少图片一个像素所占用的内存大小

    RGB_565一个像素点占用2个byte,ARGB_8888占用4个byte

    Bitmap.Config.RGB_565

    通常的例子如图所示

    (3)内存重用:通常使用BitmapFactory.Options.inBitmap

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inBitmap = mBitmap; //重用了mBitmap的内存,注意当前decode出来的bitmap内存大小不能超过mBitmap
    Bitmap bitmap = BitmapFactory.decodeFile(..., options);
    //bitmap是新decode出来的。


    查看全部
    1 采集 收起 来源:图片加载优化

    2019-01-06

  • 见截图所示

    查看全部
    0 采集 收起 来源:图片OOM

    2018-12-28

  • 如截图所示

    查看全部
    0 采集 收起 来源:图片OOM

    2018-12-28

  • 请输入笔记内容... 课程总结回顾

    查看全部
    0 采集 收起 来源:总结

    2018-12-19

  • 内存占用与drawable文件夹关系

    同一张图片,放在不同目录下,会生成不同大小的bitmap

    建议放在xxhdpi

    查看全部
  • Android图标匹配规则

    假如有个设置是480dpi,查找对应的图片文件的顺序如下,直到找到为止

    xxhdpi——>xxxhdpi——>nodpi(不会缩放)——>xhdpi——>hdpi

    查看全部
  • mipmap 

    问:资源文件是放在mipmap还是drawable文件夹下?

    答:mipmap是Android17出的一种为了提高bitmap渲染速度和质量的一种技术。如果放在mpmap下,API会调用setHasMipMap = true来开启mipmap。Google推荐启动图标放在mipmap文件夹下,其他还是放在drawable中

    查看全部

举报

0/150
提交
取消
课程须知
学习本门课程需要大家有一定Android UI开发基础,能够在android中加载处理图片资源。
老师告诉你能学到什么?
1、图片优化的重要性。2、图片优化有哪几种方式?3、解决面试中遇到的图片优化相关问题。

微信扫码,参与3人拼团

意见反馈 帮助中心 APP下载
官方微信
友情提示:

您好,此课程属于迁移课程,您已购买该课程,无需重复购买,感谢您对慕课网的支持!