彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi,图片到底放在哪个目录

转载:http://www.eoeandroid.com/thread-565562-1-1.html

Levin:任何美工做图,他/她都会以特定的分辨率的屏为基础来做的,比如1920*1080、iphone5的分辨率1136*640。安卓的图按照最大的分辨率1080*1920出图,然后放到xxhdpi下,还是很好用的,绝大部分屏幕都会缩小图片来适配,不会出现图片拉伸变模糊的情况。

一句话总结:安卓系统在哪个目录下找到图,就以这个目录对应分辨率为基础,按照一定的比例,来缩小或者放大图片来适配当前屏幕的分辨率。

 

这个问题我相信困惑了好多人包括很多老鸟,而且有的人以为自己理解其实是错误的,包括之前的我在内,一般让美工做720*1280的切图,就直接放到xhdpi下,如果是做了1080*1920,就直接放到xxhdpi下。其实这四个文件夹和具体的屏幕分辨率是没直接关系的,上面说的做法也有一定道理,因为大部分的720*1280的手机都是高密度手机,1080*1920都是超高密度手机,但是这四个文件夹之和屏幕密度有关,和具体分辨率无关。
 
下面给出一个最最关键的等式:
  low:medium:high:extra-high:extra-extra-high=3:4:6:8:12 也就是 ldpi:mdpi:hdpi:xhdpi:xxhdpi=3:4:6:8:12
 
OK,就是说五个文件夹的比例为3:4:6:8:12。具体是怎么回事呢?下面分析一下:
 比如我用一个480*800的4寸手机,这个手机的屏幕密度按照Google的说法,就属于密度为high level的水平(通过分辨率和屏幕尺寸计算密度,然后google自己有一套标准说你位于哪个范围属于哪个level的密度水平),然后这个手机的应用在用图片的时候,就会去hdpi下去找,并且以这个文件夹的图片为标准,也就是说比如我的应用去取一张aa.png的图片,这个图片的原图尺寸为30*30,恰好hdpi下有一张,那这张图片显示到屏幕上以后,它的显示尺寸长宽都为30px。那问题来了,但如果我的hdpi下没有这张图片,而只在xhdpi下有这张图片,图片的原图尺寸是30*30,那请问显示到屏幕上的图片的尺寸会是多大呢,还是长宽都为30px吗?
 

答案是否定的,而且现在就用到了上面那个比例,high:extra-high=6:8。先明确这样一个问题,如果我的屏幕是hdpi的,结果我的图片是放到了xhdpi下,那系统会把这张图片进行缩小显示,也就是说我的xhdpi下放了一张30*30的图片,那显示当hdpi屏幕上肯定要比30*30小,这样才能保证说大小屏幕界面显示效果是一致的,因为密度小的手机显示一张图片要比密度大的手机显示同一张图片的面积要大,要想显示面积一样就必须要把图片搞小点。接上面的问题,假设显示在我的hdpi屏幕上的图片的宽度为x,那满足以下等式:
 6:8=x:30 。 
 可得到x=22.3,向后取整数得23 。
 
有兴趣的朋友可以验证一下~~(PS:我已经验证过了才敢在这吹。哈哈~)
 
OK,这就是对这五个文件夹的彻底理解~  谢谢~
 

 

你可能感兴趣的:(彻底理解ldpi、mdpi、hdpi、xhdpi、xxhdpi,图片到底放在哪个目录)