安卓日记——屏幕适配

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

首先普及几个概念

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全新的适配方式 堪称适配终结者

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值