安卓的drawable文件夹共有5中,除去已经使用很少的ldpi,其他四种如下。dpi表示单位尺寸内的像素个数,计算方法为屏幕对角线的长度/对角线上的像素个数。因此,表中的代表分辨率一项,只能大概的表示该屏幕属于哪个级别,并不能确切的表示该屏幕的dpi。例如对于5.5inch 1920x1080的屏幕,可以计算出对角线上的像素个数为2203,dpi=2203/5.5=400,它是小于xxhdpi的标准480的,但是由于400>320,所以该屏幕依然是属于超高清,用代码去测试可以发现metrics.density=3。
drawable | dpi | 代表分辨率 |
---|---|---|
mdpi 标清 | 160 | 480x320 |
hdpi 高清 | 240 | 640x480 |
xhdpi超清 | 320 | 1080x720 |
xxhdpi超高清 | 480 | 1920x1080 |
对于安卓手机各种不同的分辨率,设计师通常都是只有一套设计,有时候甚至都没有给安卓专门的设计图,而是共用ios的设计图,这样就会导致开发人员在开发界面时很纠结,本人曾经就是这样过来的。后来跟设计师讨论了很多次,终于让设计师明白了原来安卓真的需要一套专门的设计图。对于与ios共用的设计图,其实可以可有个粗略的解决办法,设计图是根据640x1136来设计的,iphone 5s的尺寸为4inch,因此可以计算出来dpi为325,很接近xhdpi的标准,因此作为开发人员,我们就可以认为这是以xhdpi为标准的设计图,从而设计控件尺寸就等与设计尺寸/2,单位用dp(1dp=2px),切图也可以直接放在xhdpi文件夹中。但是,这只是一种权宜之计,最好的方法是设计师设计一套安卓专用的设计图,画布大小可以直接采用1080x720,这样
控件尺寸就严格等与设计尺寸/2,就可以完美兼容高清以及超高清的屏幕