Android 动态布局实践 - 使用FrameLayout

来源:互联网 发布:php list range 编辑:程序博客网 时间:2024/05/17 03:29

一转眼,2015年已经接近尾声了,在本年的最后一天,博主为各位朋友带来2015年度最后一篇技术分享文章。
今天我们来聊一聊Android动态布局那点事。
最近项目中需要实现根据服务器的Json字串解析后,得到每一个控件的位置,然后将其按照既定的位置呈现在屏幕中。
关于算法,基本的思路就是首先取整个Layout的固定值。由于本次产品需求中,程序是只允许竖屏(Portrait),那么屏幕宽度便成为了固定值。当然,如果允许横屏(Landscape)的话,在旋转屏幕相关的生命周期中,对控件位置进行重新计算,然后重新摆放即可。
关于上述计算,我的建议是给出整个布局的宽高比、单个元素的起点坐标占整个布局的比例、单个元素的宽高占整个布局的比例。这样就可做到最大程度的屏幕适配,而且元素不会走形。
下面再说一下元素的摆放。一开始使用的是AbsoluteLayout,后来考虑到该类已被废弃,因此采用FrameLayout。
首先写一个类,继承FrameLayout;然后写一个Public的方法,用来设定数据源,并开始计算每个元素的位置。最后,利用循环逐个添加每个View即可。
最后,如果需要有点击事件,还需要为每一个View设置监听器。比较好的解决办法是利用接口回调。
完整代码见此:
https://github.com/XiaoWenHan/SmartModuleDemo
(请自行修改import类,并引入gson库)

0 0
原创粉丝点击