2017-02-28-一个好用的Android比例自动适配的库
来源:互联网 发布:招警考试软件 编辑:程序博客网 时间:2024/05/22 12:56
原文来自一个好用的Android比例自动适配的库
欢迎去博主自己的博客体验更好的阅读感受
今天刷github的时候发现一个鸿神写的很牛逼的适配库——AndroidAutoLayout.
刚好公司需要适配不同大小的屏幕,就简单试用了一下,感觉不错.集成简单,支持的控件广泛,使用灵活,虽然已经是15年写的了,但是现在用起来也没有发现什么冲突和崩溃.所以写到博客上推荐给大家.
优势
这个库实现的最方便的功能是:我们拿到UI部门给出的以px为单位标注的设计图后,直接照抄上面的px尺寸就能写出一套适配于所有分辨率的xml layout.不仅免去了对着设计图把px转成dp的麻烦,而且也不用为不同的屏幕编写多套layout.很有一套UI打遍天下的感觉.
而且使用这个库理论上完全可以使用一个FrameLayout,里面的view使用margin定位,不用嵌套就能完成UI,对UI效率也有很大提升.
原理
简单学习了一下源码,这个库的核心思想是,事先按照设计图设定好设计图的宽高(design_width/design_height),然后把设计图上所有控件的px尺寸按原单位px填入xml文件中,最终这个库会根据设计图总体尺寸和控件尺寸,算出控件在设计图上占的宽高比,再根据实际屏幕大小动态放大或缩小控件以保证控件在实际屏幕上占的比例和在设计图上占的比例一致.
这种按比例缩放的方法不仅可以用在控件本身的大小上,也可以同理应用到控件的margin/padding/textSize等跟大小相关的属性上,统一缩放以后,在不同的屏幕上显示的效果就都跟设计图上一致了.
使用
1.首先添加库引用.
dependencies { compile 'com.zhy:autolayout:1.4.5'}
2.在项目的AndroidManifest中注明设计稿的尺寸。
<meta-data android:name="design_width" android:value="768"></meta-data><meta-data android:name="design_height" android:value="1280"></meta-data>
3.界面的改动.
- Activity界面的用法
让Activity继承AutoLayoutActivity
public class MainActivity extends AutoLayoutActivity {.......}
- Fragment界面的用法
在onCreateView生成返回生成的view之前使用AutoUtils重新计算view的大小(一定要在对view的全部处理完成后再调整大小).
@Nullable@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(.......); ......... ......... AutoUtils.autoSize(view); return view;}
- 动态生成的view的用法
以上两种都是对xml中写好的静态的layout进行大小适配的用法.如果需要动态生成view,比如生成页码按钮,添加到页码容器中,需要在生成结束后,添加到容器之前调用AutoUtils进行大小调整.
//动态生成pageBtn,并且动态设置宽高间隔等TextView pageBtn = new TextView(getApplicationContext());pageBtn.setPadding(10 , 20 , 30 , 40);pageBtn.setTextSize(25);LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(40 , 40);layoutParams.setMargins(10 , 20 , 30 , 40);//在全部生成完毕后,添加至容器之前调整大小.AutoUtils.autoSize(pageBtn);pageBtnContainer.addView(pageBtn , layoutParams);
做完之后,记得把dp换成px,大小换成跟设计图上标注的一样的px值.
集成完毕,适配完成,就这么简单~
其他
感谢张鸿阳大神提供这么好用的库.
AndroidAutoLayout的github
鸿神写的AutoLayout的介绍文章
AndroidAutoLayout的项目介绍
以上介绍中还附上了许多进阶用法,学习中…
- 2017-02-28-一个好用的Android比例自动适配的库
- Android一个好用的更新库
- Android 如何根据比例绘制一个不同颜色的圆
- Android 如何根据比例绘制一个不同颜色的圆
- 一个好用的几乎没有Callback的Android异步库
- 推荐一个好用的自动构建工具Hudson
- 一个好的代码自动生成工具
- 配置一个好用的Android模拟器
- Android -AutoCompleteTextView-简单又好用的自动完成文本框
- iOS--UIScrollView的一个封装好的自动滚动视图
- 学习android的一个好的网址
- 一个好用的基于FireFox的网站更新自动提醒插件
- 一个好用的android界面编辑工具DroidDraw
- 如何配置一个好用的Android模拟器
- 一个好用的Android Log查看工具
- 一个好用的android图片压缩工具类
- 10.3 【Android入门】一个好用的安卓模拟器
- 一个稳定好用的android计步器源代码
- MySQL 从外表查询(并截取固定长度)批量插入数据到表中
- window下的redis安装使用
- 海量数据处理
- 延长FLASH和EEPROM芯片写入次数的小方法
- 工具类的封装--Log封装
- 2017-02-28-一个好用的Android比例自动适配的库
- 类加载全过程
- @SuppressLint("NewApi")和@TargetApi()的区别
- Single Number
- 93
- Oracle PL/SQL之LOOP循环控制语句
- 7.《MySQL必知必会》事务,全球化,安全管理与维护
- 有关mina的session管理及客户端断线重连的问题
- Maven项目的目录结构