一、关于布局适配
1、不要使用绝对布局
2、尽量使用match_parent 而不是fill_parent 。
3、能够使用权重的地方尽量使用权重(android:layout_weight)
4、如果是纯色背景,尽量使用
android
的shape 自定义。
5、如果需要在特定分辨率下适配,可以在
res
目录上新建
layout-HxW.xml
的文件夹。比如要适配
1080*1800
的屏幕(魅族
MX3
采用此分辨率)则新建
layout-1800x1080.xml
的文件夹,然后在下面定义布局。
Android
系统会优先查找分辨率相同的布局,如果不存在则换使用默认的
layout
下的布局。
二、关于图片制作
1、关于设计:
设计图先定下一个要设计的尺寸,而且尽量采用在目前最流行的屏幕尺寸(比如目前占屏幕比重比较多的是
480
系列,也即是
480*800
或者
400*854
,下面的图标制作也在次基础上进行比例的换算)上设计。
先了解一下屏幕的级别:
说明:
屏幕级别:
注意屏幕级别是按照密度分级,和像素没有关系。如果非要让密度和像素扯上关系,则需要一个参照系,
android
使用
mdpi
级别作为标准参照屏幕,也就是说在
320*480
分辨率的手机上一个密度可以容纳一个像素。然后其他密度级别则在此基础上进行对比。如果理想情况下,
480*800
的屏幕一个密度可以容纳
1.5
个像素。
物理大小:
单位是英寸而不是像素,也就说一个英寸在任何分辨率下显示的大小都是一样的,但是像素在密度不同的手机里面显示的实际的大小是不一样的(这就是为什么
android
手机需要适配的原因)。
然后就是重点。
假设
1
像素在
160
密度下显示
1
英寸,则
1
像素在
240
密度基础上显示大约
0.67
英寸,在
320
密度下显示
0.5
英寸。于是就出现一种情况,在电脑上的一个像素,在不同的手机上看实际的大小不一样。那么怎么让“设计效果”在不同的手机上看起来显示的区域一样呢?
还是假设一个像素在
160
密度下的显示在一个密度内,也假设就是一英寸。那么需要几个像素才能在
240
密度级别下显示在一英寸范围内呢?答案是
1.5
个像素(根据上图的比率换算)。
了解了这个关系,接下来就是图标的制作。
2、关于切图。
关于切图有几个建议:
第一,长宽最好是
3
的倍数(根据
android
的推荐
logo
图标的大小是
48
(
mdpi
),
72
(
hdpi
),
96
(
xhdpi
)得出的最小公约数)。
第二,长宽最好是偶数。因为奇数在进行等比压缩的时候可能有问题。
第三,根据上面两条,如果长宽是
6
的倍数最理想。
第四,如果可以拉伸而不改变设计意图的情况下,比如纯色背景,则使用
android
的
9path
工具制作成
.9
的图片。
3、关于图标的适配。
然后接下来的一切就和设计稿没什么关系。在切好图的基础上,根据屏幕密度、像素和实际大小的比例关系。假如设计司在
480*800
的分辨率下做好了设计图,并且切好图,如果你需要适配
720*1280
屏幕,该怎么做?根据比例,他们的关系是
2:3
,于是你需要按照1.5倍
比例制作图标,比如你在
480*800
的设计稿上切下来一个
20*20
像素的图,那么你就需要制作一个等比放大成
30*30
像素的图标,这样同一个图标在
480*800
的屏幕和
720*1280
的屏幕上显示的实际大小才一样。同理,如果你需要适配
xxhdpi
则需要在
20*20
的基础上制作一个等比放大成
40*40
像素的图标。
4、关于图标的目录,
480*800
切下来的图我们放在
drawable-hdpi
目录下,按照
2:3
放大的图标放在
drawable-xhdpi
目录下,按照
2
倍放大的图标放在
drawable-xxhdpi
目录下。
android
会根据手机的密度优先查找对应的目录的资源,
比如
408*800
分辨率下的手机如果密度是
160
,则自动加载
drawable-hdpi
这个目录下的图标,
如果
720*1280
密度是
240
的手机自动加载
drawable-xhdpi
这个目录下的图标。如果没有这个文件夹,则查找和
240
最接近的对应密度文件夹。
三、其它
接下来要说的估计会让你失望,根据上面的步骤也不能完全解决适配的问题,只能是大概适配,而就算根据上面的步骤大概适配了,实际在手机上的效果也有出入。
比如魅族
MX3
的分辨率是
1080*1800
,标准情况下密度是
480
,但是他的密度大约是
524
,和
480
接近,也就是会查找drawable-xxhdpi
这个资源下的文件。也就是说你在
480*800
分辨率下切图然后按两倍放大的图标在这台手机上显示的效果还是比实际的小。
而另一个要说的问题是
540*960
或者
640*960
,他们的密度很可能是或者接近
240
也可能是
320
。于是在
480*800
的设计稿上切下来的图并且进行的适配制作,在这些手机上显示的实际大小也可能或大或小。
综上所述,我也只是把我的理解和经验分享一下,但是并不能完美适配屏幕,仅仅当做抛砖引玉,如果您路过并且看到这份建议,如果你正好有更好的方案能够进行适配,请不吝赐教。