在安卓平台上,适配是必不可少的,如今不仅要适配手机,还要适配多种分辨率的平板,下面讲几点我遇到的情况
1,屏幕适配的方法
四种屏幕尺寸分类::
- small
- normal
- large
- xlarge
其中对应手机的尺寸如下 - layout-small(屏幕尺寸小于3英寸左右的布局)
- layout-normal(屏幕尺寸小于4.5英寸左右)
- layout-large(4英寸-7英寸之间)
- layout-xlarge(7-10英寸之间)
四种密度分类:
- ldpi (low)
- mdpi (medium)
- hdpi (high)
- xhdpi (extra high)
一般情况下的普通屏幕:
- ldpi是120
- mdpi是160
- hdpi是240
- xhdpi是320
- xxhdpi是480。
需要根据dpi值准备5套图片资源, - drawable
- drawalbe-ldpi
- drawable-mdpi
- drawable-hdpi
- drawable-xhdpi
(这个不是必须,很多公司只用一套或者两套)
一般按照如下来获取屏幕的像素和密度:
DisplayMetrics metric = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metric);
int width = metric.widthPixels; // 屏幕宽度(像素)
int height = metric.heightPixels; // 屏幕高度(像素)
float density = metric.density; // 屏幕密度(0.75 / 1.0 / 1.5)
int densityDpi = metric.densityDpi; // 屏幕密度DPI(120 / 160 / 240)
另外屏幕密度可以自己计算:如5.5英寸,1920*1080的屏,先计算斜边:1920²+1080²开根号=2202再除以5.5,屏幕密度为400,大于320则被归一化到480xxhdpi的队列
分辨率适配
layout-1920*1080,
也可按照最小宽度和高度来分:
layout-sw600dp(一般用来适配7inch平板)
layout-sw720dp(10 inch左右平板)
如果要适配同样大小,不同分辨率的平板,怎么办呢?如1920*1080 和1280*720都是8英寸的平板
有的人说可以通过分辨率来区分,可是如果仅仅是分辨率,
layout-1920*1080即有可能是手机,也有可能是平板
其实此时,只要将上面的条件组合起来,
组合适配
如layout-xlarge-mdpi和layout-xlarge-hdpi
dimens适配
这种适配是我现在用的最多的一种适配,只需要在不同的dimens下设置不同的长度单位,layout中所有的margin padding 及width height等都引用dimens下的值即可
分别建议自己想适配的类型values文件夹
每个文件夹下都新建一下dimens
- 在手机的dimens文件中
<dimen name="main_camera_setting_tab_margin_15px">5dp</dimen>
- 在pad的dimens文件中
<dimen name="main_camera_setting_tab_margin_15px">10dp</dimen>