Android 动态布局实践 - 使用FrameLayout
2015-12-31 09:35
190 查看
一转眼,2015年已经接近尾声了,在本年的最后一天,博主为各位朋友带来2015年度最后一篇技术分享文章。
今天我们来聊一聊Android动态布局那点事。
最近项目中需要实现根据服务器的Json字串解析后,得到每一个控件的位置,然后将其按照既定的位置呈现在屏幕中。
关于算法,基本的思路就是首先取整个Layout的固定值。由于本次产品需求中,程序是只允许竖屏(Portrait),那么屏幕宽度便成为了固定值。当然,如果允许横屏(Landscape)的话,在旋转屏幕相关的生命周期中,对控件位置进行重新计算,然后重新摆放即可。
关于上述计算,我的建议是给出整个布局的宽高比、单个元素的起点坐标占整个布局的比例、单个元素的宽高占整个布局的比例。这样就可做到最大程度的屏幕适配,而且元素不会走形。
下面再说一下元素的摆放。一开始使用的是AbsoluteLayout,后来考虑到该类已被废弃,因此采用FrameLayout。
首先写一个类,继承FrameLayout;然后写一个Public的方法,用来设定数据源,并开始计算每个元素的位置。最后,利用循环逐个添加每个View即可。
最后,如果需要有点击事件,还需要为每一个View设置监听器。比较好的解决办法是利用接口回调。
完整代码见此:
https://github.com/XiaoWenHan/SmartModuleDemo
(请自行修改import类,并引入gson库)
今天我们来聊一聊Android动态布局那点事。
最近项目中需要实现根据服务器的Json字串解析后,得到每一个控件的位置,然后将其按照既定的位置呈现在屏幕中。
关于算法,基本的思路就是首先取整个Layout的固定值。由于本次产品需求中,程序是只允许竖屏(Portrait),那么屏幕宽度便成为了固定值。当然,如果允许横屏(Landscape)的话,在旋转屏幕相关的生命周期中,对控件位置进行重新计算,然后重新摆放即可。
关于上述计算,我的建议是给出整个布局的宽高比、单个元素的起点坐标占整个布局的比例、单个元素的宽高占整个布局的比例。这样就可做到最大程度的屏幕适配,而且元素不会走形。
下面再说一下元素的摆放。一开始使用的是AbsoluteLayout,后来考虑到该类已被废弃,因此采用FrameLayout。
首先写一个类,继承FrameLayout;然后写一个Public的方法,用来设定数据源,并开始计算每个元素的位置。最后,利用循环逐个添加每个View即可。
最后,如果需要有点击事件,还需要为每一个View设置监听器。比较好的解决办法是利用接口回调。
完整代码见此:
https://github.com/XiaoWenHan/SmartModuleDemo
(请自行修改import类,并引入gson库)
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法