这篇博客是上一篇的后续。这里我主要和大家阐述一下我对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,即,取图片时不会进行运算.
这里我要强调的一点是,当系统从文件夹取出图的时候,图片就已经经过运算了!
写的不太好,多谢阅读.