官方地址:Android Developer屏幕适配教程
一.关于布局适配建议
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下的布局。
二.术语和概念
四种屏幕尺寸分类:: small, normal, large, and xlarge
四种密度分类: ldpi (low), mdpi (medium), hdpi (high), and xhdpi (extra high)
需要注意的是: xhdpi是从 Android 2.2 (API Level 8)才开始增加的分类.
xlarge是从Android 2.3 (API Level 9)才开始增加的分类.
DPI是“dot per inch”的缩写,每英寸像素数。
一般情况下的普通屏幕:ldpi是120,mdpi是160,hdpi是240,xhdpi是320。
三.如何做到自适应屏幕大小
1)界面布局方面
需要根据物理尺寸的大小准备5套布局,layout(放一些通用布局xml文件,比如界面中顶部和底部的布局,不会随着屏幕大小变化,类似windos窗口的title bar),layout-small(屏幕尺寸小于3英寸左右的布局),layout-normal(屏幕尺寸小于4.5英寸左右),layout-large(4英寸-7英寸之间),layout-xlarge(7-10英寸之间)
2)图片资源方面
需要根据dpi值准备5套图片资源,drawable,drawalbe-ldpi,drawable-mdpi,drawable-hdpi,drawable-xhdpi
Android有个自动匹配机制去选择对应的布局和图片资源
四.关于图片制作
1)关于设计:
设计图先定下一个要设计的尺寸,而且尽量采用在目前最流行的屏幕尺寸(比如目前占屏幕比重比较多的是480系列,也即是480800或者400854,下面的图标制作也在次基础上进行比例的换算)上设计。
先了解一下屏幕的级别:
屏幕级别 | 屏幕密度 | 比率(相对) | 物理大小(英寸) | 像素大小 | 分辨率 |
---|---|---|---|---|---|
ldpi | 120 | 0.75 | 1 | 120 | 240*320 |
mdpi | 160 | 1 | 1 | 160 | 320*480 |
hdpi | 240 | 1.5 | 1 | 240 | 480*800 |
xdpi | 320 | 2 | 1 | 320 | 720*1280 |
xxdpi | 480 | 3 | 1 | 480 | 1080*1920 |
2)关于图标的适配:
在切好图的基础上,根据屏幕密度、像素和实际大小的比例关系。假如设计师在480 * 800的分辨率下做好了设计图,并且切好图,如果你需要适配720 * 1280屏幕,该怎么做?根据比例,他们的关系是2:3,于是你需要按照1.5倍比例制作图标,比如你在480 * 800的设计稿上切下来一个20 * 20像素的图,那么你就需要制作一个等比放大成30 * 30像素的图标,这样同一个图标在480 * 800的屏幕和720 * 1280的屏幕上显示的实际大小才一样。同理,如果你需要适配xxhdpi则需要在20 * 20的基础上制作一个等比放大成40 * 40像素的图标。
五.关于屏幕适配小技巧sw<n>dp
第一种后缀:sw<n>dp,如layout-sw600dp, values-sw600dp
这里的sw代表smallwidth的意思,当你所有屏幕的最小宽度都大于600dp时,屏幕就会自动到带sw600dp后缀的资源文件里去寻找相关资源文件,这里的最小宽度是指屏幕宽高的较小值,每个屏幕都是固定的,不会随着屏幕横向纵向改变而改变。
第二种后缀w<N>dp 如layout-w600dp, values-w600dp
带这样后缀的资源文件的资源文件制定了屏幕宽度的大于Ndp的情况下使用该资源文件,但它和sw<N>dp不同的是,当屏幕横向纵向切换时,屏幕的宽度是变化的,以变化后的宽度来与N相比,看是否使用此资源文件下的资源。
第三种后缀h<N>dp 如layout-h600dp, values-h600dp
这个后缀的使用方式和w