巧用dimens适配多个分辨率(一)

   让应用自动适配多个分辨率的屏幕,是每个android程序员的基本功,就好像前端工程师熟练编写CSS Hack一样。适配工作中一个重要的工作就是对页面的调整。

   对于页面的适配,有很多的方法和技巧。比如布局中尽量使用wrapcontent ,fillparent,尽量避免具体的数字,由系统来计算合适的宽高;或者为每个分辨率写一套布局文件,设置对应分辨率下控件的宽高;

  为每一个分辨率写一套布局文件虽然够独立,够简单。但是维护起来成本较高。一个页面的改动,往往涉及多个布局文件的改动,让人很痛苦。

  小技巧

  我们可以尝试只写一套xml布局,然后为该布局准备多套dimension文件。

  说的详细一点就是,xml布局中组件的宽高,不要使用具体的数值来表示,而是配置到dimension文件中。每套dimension文件中数值的大小都是成比例计算出来。

  比如在1980*1080分辨率下,定义 px15表示15px

<dimen name= "px15" >15px</ dimen>
那么在 1080 * 720分辨率下,px15要成比例缩小1.5倍, 定义px15 表示 10px
<dimen name= "px15" >10px</ dimen>
所以在xml布局文件中,我们可以这样来表示:
  
<LinearLayout
 
android:layout_width="@dimen/px150"
 
android:layout_height="@dimen/px15"
 
android:orientation="vertical" >
 
    ……
 
    ……
 
</LinearLayout>

  这套布局文件中的LinearLayout 在1980 * 1080 分辨率下的宽高为 150 x 15 , 在 1080 * 720分辨率下的宽高就会自动变成 100 * 10

  其他分辨率同理

  疑问

  1.有的同学会疑问,这样不就变成需要维护多套dimenson文件了?换汤不换药呀?

     其实不然,对于dimension文件我们可以使用代码来控制生成,数值范围可以根据自己的情况来。其他分辨率下只需要按照相应比例,使用代码算一下即可。

     编写一个这样的生成代码并不难,下篇文章我们再给出。

     生成完毕后,Values 目录结构如下:

  2. 按比例计算布局一定可靠吗,会不会出现混乱的现象

     有可能会,这个时候就需要协调布局使用的宽高,选择合适的宽高让页面在各个分辨率下,看起来不算离谱就行,不一定严格按照设计来。大部分页面是兼容的。

    下一篇文章,我们给出自动生成这些dimension文件的代码。


   原文链接:http://www.67tgb.com/?p=573

   转载注明出处:望月听涛


评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值