安卓日记——屏幕适配

2017-01-14 10:46:11来源:http://www.jianshu.com/p/13ddcde77500作者:饥渴计科极客杰铿人点击

由于安卓的开源,各种设备的尺寸也是五花八门,我们无法做到任何设备都适配(特殊要求除外),所以只能针对目前比例最大的几种机型进行适配


首先普及几个概念

px是构成图片的最小单位,dpi是像素密度,对角线的像素除以长度,dip(也叫作dp)是密度无关像素,160dpi的设备上,1dip=1px。1dip 所等于的px和dpi成正比,也就是说在320dpi的设备上,1dip=2px。


sp可以根据文字大小首选项进行放缩,谷歌官方推荐使用sp作为字体的单位,应该使用12sp以上且为偶数作为字体大小,否侧可能看不清或者放缩时可能造成精度的丢失





























名称像素密度范围
mdpi120dpi~160dpi
hdpi160dpi~240dpi
xhdpi240dpi~320dpi
xxdpi320dpi~480dpi
xxxhdpi480dpi~640dpi

支持各种屏幕尺寸的工作主要有以下几个方面


1. 使用wrap_contnet、math_parent、weight
2. 使用相对布局,禁止绝对布局
3. 使用限定符
4. 使用自动拉伸位图


1.使用wrap_contnet、math_parent、weight

在LinearLayout时,如果想两边的控件大小固定,中间的控件填充剩下的空间,可以设置中间控件的weight为1,其他两个不设或者设为0。
如果设置了weight最好把想高度或者宽度设为0,比如想横向用weight,那么就把宽度设为0,设为0后宽度或者高度和weight成等比例,weight越大宽度或者高度越大。
如果两个控件设置了math_parent和weight的话
weight计算出来的高度=原来宽度+剩余空间*weight所占百分比


 <LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal">
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:text="button1"/>
<Button
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="2"
android:text="button"/>
</LinearLayout>

设L是屏幕宽度,Button1现在的宽度是2/3L,他原来的宽度应该是L,剩下的宽度是L-2L,然后它weight所占百分比是1/3


2/3L=L+(L-2L)*1/3

2. 使用相对布局,禁用绝对布局

如果是按照比例摆放的就用线性布局,如果要控件之间有特殊要求的就用相对布局


3.使用限定符

使用尺寸限定符,在values文件夹加上尺寸,然后应用可以根据不同设备尺寸选择,如values-480x320


4.使用自动拉伸

.9图左边和上边是拉伸区域,下边和右边是padding区域
在左边和上边设的点所在的线会被拉伸,下边和右边所设的线的交叉区域保持和圆图相同的padding
.9图要在保留图片的两侧点相同的点,线不要穿过图片,线上点会被拉伸,若某边不需要拉伸可以不设点


最后放一个鸿洋大大的彩蛋


Android AutoLayout全新的适配方式 堪称适配终结者


最新文章

123

最新摄影

微信扫一扫

第七城市微信公众平台