图像系列:Bitmap: Bitmap内存优化

文章参考:

Android 开发绕不过的坑:你的 Bitmap 究竟占多大内存?

有了上图额理论支撑,Bitmap优化图片内存,到底优化什么 ?

理论一:什么是DPI ,什么是分辨率,什么是密度

先摘抄 DisplayMetrics中 官方 对 密度(Density)和分辨率(DensityDpi)解释

  • density:The logical density of the display. (逻辑意义上的屏幕密度)

  • This is a scaling factor for the Density Independent Pixel unit, where one DIP is one pixel on an approximately 160 dpi screen (for example a 240x320, 1.5”x2” screen), providing the baseline of the system’s display. Thus on a 160dpi screen this density value will be 1; on a 120 dpi screen it would be .75; etc.

    This value does not exactly follow the real screen size (as given by xdpi and ydpi, but rather is used to scale the size of the overall UI in steps based on gross changes in the display dpi. For example, a 240x320 screen will have a density of 1 even if its width is 1.8”, 1.3”, etc. However, if the screen resolution is increased to 320x480 but the screen size remained 1.5”x2” then the density would be increased (probably to 1.5).

  • densityDpi:The screen density expressed as dots-per-inch. (每英寸屏幕上的像素点)

  • 所以简单来说,Dentisy 是逻辑上的密度,DPI 就是分辨率,通常我们将160分辨率 密度值为1 

  • 理论二:一张图片占据了多大内存 

  • 移动客户端对高清大图是很头疼的,问什么头疼呢?OOM内存溢出呗,那么一张图片到底用了多大内存了,Android Api 有个函数可以计算

  • public final int getByteCount() {
        // int result permits bitmaps up to 46,340 x 46,340
        return getRowBytes() * getHeight();
    }

    通过这个方法,我们就可以获取到一张 Bitmap 在运行时到底占用多大内存了。

  • 一张 522x686 的 PNG 图片,我把它放到 drawable-xxhdpi 目录下,在三星s6上加载,占用内存2547360B,就可以用这个方法获取到。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值