导语:Android碎片化严重,进行屏幕适配是每一个Android开发者必须要做的。



常用尺寸:

dp(dip):密度无关像素 px:像素 sp:可根据选项文字大小设置进行缩放的尺寸单位

我们看一个例子 左边的屏幕:是1920x1080的屏幕 右边的屏幕是960x540的屏幕 图中的button的大小是270px(像素) 在左边的屏幕占4分之一,在右边的屏幕占二分之一

我们的目的是在各个屏幕上均显示为自己的四分之一 所以我们引入了dp这个概念; 首先我们来讲一下密度比 ppi(平均像素)=对角线上的像素数/尺寸 注:对角线上的像素数用勾股定理可以得出 dp是以160ppi(平均像素)为基准 1dp=1px 1 dp =1 *平均像素/160 px 平均像素/160也成为密度比

假设我们有两款手机 1080p的密度比 2 540的密度比 为1 那么135dp 为 135x2 =270px 占左边的四分之一; 那么135dp 为135x1 =135px 占右边屏幕的四分之一 完成了适配;

dp有没有缺点?当然有, 下面是对照表 mdpi 120dpi~160dpi hdpi 160dpi~240dpi xhdpi 240dpi~320dpi xxhdpi 320dpi~480dpi xxxhdpi 480dpi~640dpi

密度比为2的 分辨率为 768*1280 逻辑宽度为384dp的Nexus4 密度比为2的 分辨率为760 *1280 的逻辑宽度为380dp 的其他手机 相差4dp 如果一个控件是380dp 则Nexus4的会有空隙,而另一个手机会充满

 

为了解决这个问题,我们采用代码适配的方式,代码适配 不考虑尺寸,采用比例的方式,把横向的分辨率/360; 竖向的分辨率/480;得出每一个份的长度和宽度,根据不同的限定符,得到不同的结果.

具体java代码网上很多自行百度。

        代码适配:

        用法:把生成的代码放入到res文件夹中,并把默认的value文件夹也添加1dp=1px比例的尺寸文件; 我们要注意一个问题,当分辨率没有找到他的限定符,那么他找到默认的value文件夹,我们需要在value文件夹里也加入尺寸文件,1dp=1px这样是为了程序兼容,但并不是很好的效果.所以我们尽量要把尽量多种的分辨率加到尺寸文件里说完了固定尺寸适配,

        我们说一下布局中的适配. 推荐用LinearLayout 比例适配 weight 和weightsum互相结合可以满足基本上的需要.