深入理解dp,px,以及density之文件夹系列

本文详细解释了Android中不同dpi文件夹的作用及如何根据设备分辨率选择合适的资源文件。通过具体的例子,介绍了系统如何根据设备的dpi选取并调整drawable资源大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


这篇博客是上一篇的后续。这里我主要和大家阐述一下我对android文件夹分类的理解吧。当然主要还是围绕分辨率来说吧~


drawable和layout文件夹很多,我例举了一部分,如下图:


这里我来解释一下,对于land和port,顾名思义,就是说横屏和竖屏的时候调用的drawable或者layout。

这里主要说明一下后缀是dpi的文件夹。


相信阅读过上一篇文章的人,都已经学会了如何计算自己手机的dpi,这些文件夹就是对应了这些dpi去使用。

具体步骤如下:

找到与自己手机相符的dpi,然后取里边的drawable去使用,

若没有找到,则找更高dpi的drawable,并且调用公式去计算然后使用。

如果还没有找到,则找低密度的dpi的drawable,并且调用公式去计算然后使用。

谷歌规定 : 

ldpi 是 120,

mdpi是160,

hdpi是240,

xhdpi是320。

首先你必须明白一点,无论系统从哪个文件夹去取drawable,都会进行计算(nodpi文件夹除外).

设图标原尺寸为 x,y.图标取出文件夹时的尺寸为,Tx,Ty.

具体公式是:

Tx = x * (density / density(文件夹对应的dpi))

Yy = y * (density / density(文件夹对应的dpi))


这么写可能有些人不太能够理解,举个栗子,大家应该就明白了~

还是我的手机,小米M1,屏幕密度240dpi~

现在有一张图,存放在ldpi,mdpi,hdpi,xhdpi中,图片是100px * 100px的~


若从ldpi文件夹中取出图片(文件夹的dpi为120),则取出后的图片分辨率为:

Tx = 100px * (240 / 120) = 200 px

Ty = 100px * (240 / 120) = 200 px


若从hdpi中取出图片,则取出后的图片分辨率为:

Tx = 100px * (240 / 240) = 100 px

Ty = 100px * (240 / 240) = 100 px


若从xhdpi中取出图片,则取出后的图片分辨率为:

Tx = 100px * (240 / ?) = ? px (自己动手试试吧!)

Ty = 100px * (240 / ?) = ? px


特殊文件夹,nodpi,就是不考虑文件夹的dpi,即,取图片时不会进行运算.


这里我要强调的一点是,当系统从文件夹取出图的时候,图片就已经经过运算了!


写的不太好,多谢阅读.


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值