android drawable 图片大小,不同的drawable文件夹下图片加载到内存后图片尺寸大小的分析...

先说结论:

不同drawable文件下图片在同一手机图片尺寸是不同的

同一个drawable文件夹下的图片在不同分辨率的手机图片尺寸是不同的

先聊下DP

afd6ec4ad1627710852f36083c30fdd7.png

要在密度不同的屏幕上保留界面的可见尺寸,您必须使用密度无关像素 (dp) 作为度量单位来设计界面。dp 是一个虚拟像素单位,1 dp 约等于中密度屏幕(160dpi;“基准”密度)上的 1 像素。对于其他每个密度,Android 会将此值转换为相应的实际像素数。

例如,考虑图 1 中的两部设备。如果将某个视图定义为“100px”宽,那么它在左侧设备上看起来要大得多。因此,您必须改用“100dp”来确保它在两个屏幕上看起来大小相同。

将 dp 单位转换为像素单位

在某些情况下,您需要以 dp 表示尺寸,然后将其转换为像素。dp 单位转换为屏幕像素很简单:

px = dp * (dpi / 160)

密度限定符

f480c5603d8c85eb2669d3ad085e3c90.png

系统都会根据屏幕的 dpi 选择适当的位图。如果您没有为某个密度提供特定于密度的资源,那么系统会选取下一个最佳匹配项并对其进行缩放以适合屏幕。

提示:如果您有一些不想让系统缩放的可绘制资源(可能是因为您要在运行时自行对图片做一些调整),则应将这些资源放在带有 nodpi 配置限定符的目录中。带有此限定符的资源被视为与密度无关,系统将不会对它们进行缩放。

问题

1 为什么这张 720x1280 图片放到 锤子T1 的 xxhdpi 目录下,能够以 720x1280 的尺寸加载进内存?

1080p的锤子T1手机,ppi=445,和 xxhdpi 目录(320ppi ~ 480ppi)的缩放比是匹配的 ,

所以锤子T1手机从drawable-xxhdpi文件夹加载一个尺寸是720x1280的图片,加载到内存后的图片的尺寸也是720x1280。

2 为什么这张 720x1280 图片放到锤子T1的 drawable-hdpi 目录下,加载进内存的宽高为1440x2560?

上面说过,适用于锤子T1手机的是drawable-xxhdpi,但是图片放在了hdpi文件夹下,为了在屏幕上显示相同的dp,所以必然会导致图片的缩放。那么到底应该缩放多少倍呢?

看上图,hdpi对应的缩放比是1.5(1dp代表2个像素),xxhdpi对应的缩放比是3(1dp代表3个像素)。

那么放在drawable-hdpi下的图片,为了能在锤子T1手机上显示相同的dp,就需要缩放3 / 1.5 = 2倍。

(这也很好理解,本来应该缩放为3倍,现在才缩放了1.5倍了,所以还需要再缩放2倍)

所以这张 720x1280 图片放到锤子T1的 drawable-hdpi 目录下,加载进内存后,缩放了2倍,图片宽高变为1440x2560?

扩展

DPI/PPI

DPI = Dots Per Inch:屏幕每英寸对应多少个物理点

PPI = Pixel Per Inch:屏幕每英寸对应多少个像素点

两个参数的区别就在于Dot和Pixel的区别,dot值的是显示器上每一个物理的点,而pixel指的是屏幕分辨率中的最小单位。这个两个难道会不一样么?会!当一个像素需要多于一个屏幕上的物理点来显示的时候dot就跟pixel不一样了。这个有另一个叫法叫做dppx(dot per pixel),即每个像素中有多少个点。大部分的显示器中一个像素即一个点,但目前一些比较好的屏幕和一些手机屏幕中dppx会大于1。比如说Mac Retina,iPhone,HTC One等。

总结来说我们一般针对Android手机说的 dpi 和 ppi 是等价的。

Android adb 修改手机分辨率与DPI

// shell

adb shell

// 修改分辨率

wm size 1080x1920

// 修改dpi

wm density 480

查看

wm size

wm density

// 重置

wm size reset

wm desity reset

复制代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值