十分钟复习Bitmap

本文详细介绍了Android中Bitmap的相关概念,包括屏幕尺寸、分辨率、dpi、px、dp、sp的换算关系,以及Bitmap内存占用计算和管理。通过具体的计算示例,阐述了内存占用公式和Bitmap的配置参数。此外,还讨论了Bitmap的加载优化策略,如inSampleSize和BitmapRegionDecoder,以及内存缓存LruCache的使用。
摘要由CSDN通过智能技术生成

1 屏幕尺寸、分辨率、dpi、px、dp、sp都是什么,它们换算关系是怎么样的?

1.1 屏幕尺寸

  • 定义:手机对角线的物理尺寸
  • 单位:英寸(inch),1英寸=2.54cm

Android手机常见的尺寸有5寸、5.5寸、6寸等

1.2 屏幕分辨率

  • 定义:手机在横向、纵向上的像素点数总和
  • 单位: px(pixel),1px=1像素点

比如:分辨率1080px * 1920px,即指宽有1080个像素点,高有1920个像素点

1.3 dpi

  • 定义:每英寸的像素点数
  • 单位:dpi(dots per ich)

假设设备内每英寸有160个像素,那么该设备的屏幕像素密度=160dpi

1.4 屏幕尺寸、分辨率、dpi换算关系

  • 换算关系: dpi = 屏幕对角线上的像素个数 / 屏幕尺寸

举例分辨率:1080px * 1920px ,屏幕尺寸: 6寸

  1. 屏幕对角线上的像素个数^2 = 1080^2 + 1920^2 (勾股定理)
  2. 像素密度dpi = 屏幕对角线上的像素个数 / 6寸
  3. 最终得到像素密度为:360dpi

1.5 密度无关单位 dp、sp

  • dp定义:dp是一个虚拟像素单位,1dp约等于中密度屏幕(160dpi;“基准”密度)上的1px
  • sp定义:可缩放像素sp,sp用于定义文本大小。默认情况下,sp 单位与dp大小相同,但它会根据用户的首选文本大小来调整大小

1.6 dp、px、dpi换算关系

换算公式: px = dp * (dpi / 160)

dpi范围-密度表格如下:

密度限定符 说明 1dp对应px
ldpi 适用于低密度 (ldpi) 屏幕 (~ 120dpi) 的资源 0.75
mdpi 适用于中密度 (mdpi) 屏幕 (~ 160dpi)的资源(这是基准密度) 1
hdpi 适用于高密度 (hdpi) 屏幕 (~ 240dpi) 的资源 1.5
xhdpi 适用于加高 (xhdpi) 密度屏幕 (~ 320dpi) 的资源 2
xxhdpi 适用于超超高密度 (xxhdpi) 屏幕 (~ 480dpi) 的资源 3
xxxhdpi 适用于超超超高密度 (xxxhdpi) 屏幕 (~ 640dpi) 的资源 4
nodpi 适用于所有密度的资源。这些是与密度无关的资源。无论当前屏幕的密度是多少,系统都不会缩放以此限定符标记的资源

2 Bitmap内存占用

2.1 内存计算公式

内存占用大小 (约等于)≈ bitmap.width × bitmap.height × 单个像素的字节大小

2.1.1 单个像素的字节大小

单个像素的字节大小由Bitmap的一个可配置的参数Config来决定。

Bitmap中,存在一个枚举类Config,定义了Android中支持的Bitmap配置:

Config 占用字节大小(byte) 说明
ALPHA_8 1 单透明通道
RGB_565 2 简易RGB色调
ARGB_4444 2 弃用
ARGB_8888 4 24位真彩色

Android系统中,默认Bitmap加载图片,使用24位真彩色模式

/*
 * Image are loaded with the {@l
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值