Android的屏幕适配

一直以来就想写一篇关于屏幕适配的文章,奈何最近太忙,没啥时间,这周项目维护结束,赶紧的将这篇博客写了.

屏幕适配一直以来都是令android开发人员头痛不已的,现在市场上的机型和尺寸都是满目玲琅,想要一劳永逸的确有点难办,今天就把我的适配方式介绍给大家,以后都可以按照这种方式去适配,不难理解,相信你肯定一看就懂的!

适配的方式有很多,首先我们摒弃掉布局适配,太low,太费劲.来说一下权重适配,权重适配weight是Linearlayout的特有属性,顾名思义就是按照百分比去布局的,这样不管什么分辨率的手机都可以适配,但是这里的比例分配的原义是:控件的大小等于自身大小加上占剩余空间的比例,什么意思呢,比如说我们把两个控件的宽度设置为wrap_content,比重设为1和2,那么它们所占的比例为1/3和2/3,这个没问题,但是如果我们把wrap_content换成match_parent,那么它们的剩余空间是多少?没错,一个屏幕的宽度减去两个屏幕的宽度,那么控件1的所占比例应该是1 + (1/-3) = 2/3,控件2所占比例为1 + (2/-3) = 1/3,与前者相反了!这里需谨慎.

说完权重说一下代码适配,代码适配无疑就是在代码中动态获取屏幕的宽高,然后动态设置控件的位置,这里已是等比例屏幕的宽高,但是我们可以在xml布局里面去设置啊,为什么要这么麻烦在代码中又是获取屏幕的宽高,又是设置比例的.有人这里会想到,有些布局我们在布局里面很难或者不能设置一些属性位置,对了,比如说我们要设置一个自定义弹框的位置,或者一个popwindow的位置?是的,这里就是代码适配的适用之处,不过能用到的地方还是很少的,稍作了解就好.

前面的适配知识解决很少的一些适配方案,大多情况下我们要对一些控件设置具体的位置,有人说用linearlayout,但是有些复杂一点的布局呢,大家会说用两层linearlayout(嵌套),可以使可以,但是很多时候还是不行,而且view的测量,摆放,绘制是系统遍历view的树状结构,嵌套越深,view树的高度越高,会影响布局的渲染时间的,所以我们能用relativelayout最好不用linearlayout,用相对布局我们很多情况下就要通过距离的具体多少dp来确定位置,大家也知道,ui给我们设计稿的时候,所标注的都是以480*320为基础的px单位,那么用dp我们还需要自己去转,而且分辨率相差比较大的时候dp并不能做到适配,相差还是比较大的,当然这里我们可以创建不同的dimens.xml文件,每个分辨率写一套,然后在每设置一个值的时候计算每个分辨率下所对应的dp值,这样固然可以做到适配,但是不嫌麻烦么~~~千呼万唤使出来,为了就是引出弘扬大神的适配方式:百分比适配.


百分比适配:

    这里我就再次简洁的将弘扬大神的适配方式说一遍了.这种适配方式我们不用自己去将px转换为dp,直接使用px,省事了.原理是将以320*480为基准的1px作为一个单位,那么x代表宽度有320个单位,y代表长度有480个单位,以1080*1920为例,320*480的一个单位代表了横向x:1080/320 = 3.375px,竖向y:1920/480=4px,答案呼之欲出了,我们只需要建立各个不同分辨率的values文件夹,里面放置lay_ x.xml 和 lay_y.xml 文件,各个不同值的px也不许要我们去计算,弘扬已经给出了代码生成,会在末尾指出来.

ay_ x.xml:


比如说我们需要将一个控件设置为屏幕的中央,那么我们只需要这样写:


这样就可以完成适配了.

参考于:

Android 屏幕适配方案 - 张鸿洋

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值