来自: http://www.eoeandroid.com/thread-565562-1-1.html?_dsign=42bed080
非常感谢楼主分享
这个问题我相信困惑了好多人包括很多老鸟,而且有的人以为自己理解其实是错误的,包括之前的我在内,一般让美工做720*1280的切图,就直接放到xhdpi下,如果是做了1080*1920,就直接放到xxhdpi下。其实这四个文件夹和具体的屏幕分辨率是没直接关系的,上面说的做法也有一定道理,因为大部分的720*1280的手机都是高密度手机,1080*1920都是超高密度手机,但是这四个文件夹之和屏幕密度有关,和具体分辨率无关。
下面给出一个最最关键的等式:
low:medium:high:extra-high:extra-extra-high=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 。
另外,附上知乎上的一点东西:
链接:https://www.zhihu.com/question/19793577/answer/12981279
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
系统版本,到今天2.1~2.3的比例也是绝对比例,所有我们可以以这个为依据来做相应的适配,对于这些数据,需要随时注意,特别是在Android有新版本推出后的几个月里,市场的变动相应的会活动一些,值得注意的是这个比例只是现在的一些数据,可能之后也会有些变动,所以需要事实根据新的市场环境进行适配。
答问题1:以现在的情况为例,最为节省的话,一般开发Android APP的时候会考虑设计hdpi和mdpi的图片资源,所以也是需要设计两套图的,很多为了节省工作量直接用一套hdpi的图片资源,在mdpi的时候直接压缩,这样图片质量会损失很大,所以最好还是尽量使用两套资源图片;
2.如何设计三套图片资源来满足这3种分辨率的手机,这三套图片资源之间有什么样的大小比例关系?
答问题2:视觉在根据交互原型进行设计的时候,可以考虑以mdpi,也就是320x480为蓝本进行设计,因为Android一般采用dp为单位,而我们设计的时候一般是px为单位的,这个就涉及到一个单位转换的问题,而在mdpi下,px和dp是1:1的关系,这样在标注坐标的时候能够很方便的进行单位转换,例如我们以320x480为蓝本的话,在photoshop测量的间距为10px,我们在给到RD时的坐标可以直接标注为10dp;因为dp的单位是可以程序自己去适配不用dpi屏幕的,所以就算设计三套不同dpi的图,一般也只用对mdpi的设计图进行坐标定位,这个坐标的标注可以用在所有dpi的资源上;
因为现在Android又添加了xhdpi(类似iPhone4的960x640的分辨率)的支持,假如我们在设计有(xhdpihdpi/mdpi/ldpi)四套不同dpi的图片资源时,因为之前提到以mdpi为蓝本做第一个dpi的设计,相应的我们把mdpi的比例设定为1,相应的不同dpi的图片资源尺寸的比例关系可以是 xhdpi:hdpi:mdpi:ldpi等于2:1.5:1:0.75,也就是说,第一套图为mdpi的资源图片,xhpi可以大小调整到200%,hdpi可以调整到150%,ldpi则是75%;
3.美工设计图片的时候有没有技巧?可否先设计一套,然后按照比率缩放呢?
答问题3:视觉设计的时候就像前面说到的一样,可以优先以320x480的大小去设计一套,在用到不同dpi的时候,可以把320x480设计psd里所有APP要用到的控件单独做一个控件库的psd,psd的所有控件图层是基于形状工具绘制的,每个分辨率都做一个控件库的psd,然后可以直接让美工根据控件库的psd切图给RD使用了,先做完mdpi的控件psd后,其它dpi的控件库的psd可以依照上面说到的比例关系进行大小的调整,例如,hdpi的控件psd也就是把mdpi里的每个控件放大到150%,有时候放大缩小psd里的图片会有些半透明的虚边,细微调整即可,如果在设计mdpi的时候,每个控件的大小能够尽量的被4整除,那么基本上就可以直接放大和缩小控件大小而不用担心虚边的问题,当然也不能完全限制在大小被4整除的死胡同里,这样也容易局限视觉设计,只是在视觉设计完成后,可以尽量的去调整在,如果视觉上有些控件在大小调整到被4整除的范围里,界面整体的比如不太合适,或者很影响视觉设计,也不必去过分强求。