做Android开发,一直会被问及到或者讨论一个问题,关于屏幕适配的做法,如何做才是最好。我们试过按照摆放组件,试过创建不同屏幕对应的资源文件夹,这些或多或少都在一定程度上优化了适配的问题。但是问题也是有的,android的手机屏幕计算尺寸的单位是dp,而一般设计师童鞋标注的尺寸都是px,按照百分比来布局,要去不断的换算对应的关系,而且还依赖父容器。如果按照不同资源文件方式来适配,但是大量的文件夹以及android开源造成的各种想象不到的屏幕尺寸需要去对应,你可能不会疯,我会疯掉的。
后来在同事的介绍下使用了Autolayout,感觉这个轮子在一定程度上是一个神器,它很大程度上的解决了适配的问题。下面记录介绍一下它的使用方法。
原理:就是把你不想做的px和dp换算过程交给这个轮子来计算(原理这东西都是简单的跟一加一等于三一样)
目的:拿到UI设计图,在处理对应的布局文件时,之间按照UI效果图上标注的px尺寸写进xml文件中,通过Autolayout自动达到多屏幕的适配,让你爽歪歪~
用法:
1、引入架包:一种下载Autolayout的开源库,或者在gradle中
dependencies {
compile project(':autolayout')
}
其代码结构如下:
自动适配了FrameLayout、LinearLayout、RelativeLayout等常用容器。
在你的项目的AndroidManifest中注明你的设计稿的尺寸。
2、对应的Antivity继承AutoLayoutActivity,然后就可以开始愉快的玩耍了~
妥妥的~~~~
AutoLayoutActivity的用法实际上是完成了一件事:
LinearLayout -> AutoLinearLayout
RelativeLayout -> AutoRelativeLayout
FrameLayout -> AutoFrameLayout
如果继承AutoLayoutActivity来使用,那么你就得像Google的百分比库一样,去用AutoXXXLayout代替系统原有的XXXLayout。当然,你可以放心的是,所有的系统属性原有的属性都会支持,不过根布局上就不支持px的自动百分比化了,但是一般根布局都是MATCH_PARENT,而上述的方式,根布局也是可以直接px的百分比化的。
需要注意的几个点:
对于listview中getview中的view,因为没有继承AutoLayoutActivity,所以没有办法自动进行适配,所以可以借助其:AutoUtils.autoSize(convertView);方法,来完成适配。
当然了,这个不是最详细的解释说明,因为轮子不是我发明的,我只是一个使用者,写下来也算是对自己掌握知识的一个梳理。比较全面的传送门如下:
http://blog.csdn.net/lmj623565791/article/details/49990941
http://blog.csdn.net/l970859633/article/details/51576534