android 开发零起步学习笔记(十):UI控件动态加载机制浅析
来源:互联网 发布:mac sql 可视化工具 编辑:程序博客网 时间:2024/05/22 22:33
原文:http://blog.csdn.net/yywan1314520/article/details/52740362
1.为了满足多样化的定制需求,传统的UI加载方式已经满足不了我们的需求,为了创建出更友好,更快速的界面,我们有时需要根据用户的需求来生成控件,android动态加载机制简析,下面介绍常见的三种方式。
2.最常见的传统加载机制
这种方式也就我们用的比较多的一样方式,一般最简单的就是用这种方式来生成控件的,这种方式先将所需要的控件写在.xml文件中,然后通过setContentView(R.layout.main);就搞定了,这种方式太简单就不再讲解了。
3.通过创建容器来加载UI控件,这种方式就是动态加载中的一种。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
上面那种方式可以创建多种容器,也可以布局多种UI控件,还可以设置View和ViewGroup的其它参数,如宽高等。
4.通过 LayoutInflater 来间接加载
这种加载方式有三种形式,如下
- 方法一: LayoutInflater layoutInflater = LayoutInflater.from(context);
- 方法二:LayoutInflater layoutInflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE); - 方法三: this.getLayoutInflater();
三种方式并没有太大的区别,本质都是调用Context.getSystemService()。只是不同的分装形式而已,layoutInflater.inflate(resourceId, root); inflate()方法一般接收两个参数,第一个参数就是要加载的布局id,第二个参数是指给该布局的外部再嵌套一层父布局,如果不需要就直接传null。这样就成功成功创建了一个布局的实例,之后再将它添加到指定的位置就可以显示出来了。
那么这种方式和我们平时用的findViewById()方法又有什么不同呢?
LayoutInflater通常用于动态载入的界面,使用LayoutInflater的inflate方法动态接入layout文件;
findViewById通常用于在已经载入的界面,使用findViewById()方法来获得其中的界面元素。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
5关于上面方法的深入研究可以查看下的reference
专注于AR的在移动端的实现,如果你还有问题没解决,你可以加入我们一起交流。或是关注我们的技术公众号,这是提供技术干货的地方,你有干货可以向我们推荐。
如果你觉得写的不错,对你有用,请在下面点个 顶 支持一下,有问题可以在下面留言评论。
reference:
1.https://segmentfault.com/a/1190000003813755
2.http://ticktick.blog.51cto.com/823160/1256593
3.http://blog.csdn.net/guolin_blog/article/details/12921889
4.https://developer.android.com/reference/android/view/LayoutInflater.html
0 0
- android 开发零起步学习笔记(十):UI控件动态加载机制浅析
- android 开发零起步学习笔记(十五):android: 静态XML和动态加载XML混合使用,以及重写Layout控件
- android 开发零起步学习笔记(六)Android 自定义控件开发
- android 开发零起步学习笔记(五):布局组件
- android 开发零起步学习笔记(九):android 控制控件的位置和大小及Layout相关属性
- android 开发零起步学习笔记(十七):自定义android用户控件,使用回调函数实现自定义事件
- android studio for android learning (二十七) UI控件动态加载机制浅析
- android 开发零起步学习笔记(二十):Android开发笔记:如何使用预先制作好的SQLite数据库(整理自网络)
- android 开发零起步学习笔记(二十九):Android笔记:实现加载的progressDialog之后跳转到程序主界面
- android 开发零起步学习笔记(三):Android权限标签uses-permission的书写位置
- android 开发零起步学习笔记(一):安装Android Studio2.0
- android 开发零起步学习笔记(二):熟悉Android studio的目录结构
- android 开发零起步学习笔记(十六):Android命名规范
- android 开发零起步学习笔记(十八):Android Layout 布局属性全解
- android 开发零起步学习笔记(十九):android使用全局变量的两种方法
- android 开发零起步学习笔记(二十四):Android:打造“万能”Adapter与ViewHolder
- android 开发零起步学习笔记(二十五):Android layout属性大全
- android 开发零起步学习笔记(二十六):安卓输入法相关知识点 android InputMethodManager
- 单片机的按键处理程序
- CRT调用VBS脚本实例
- ionic下正确使用videogular的$API的姿势
- 在php中使用jsonp跨域请求
- Android设置虚线、圆角、渐变
- android 开发零起步学习笔记(十):UI控件动态加载机制浅析
- OSI和TCP/IP协议模型简介
- GRNN广义回归神经网络
- Item18 Use std::unique_ptr for exclusive-ownership resource management
- Unity&Shader基础篇-常用函数的使用与案例
- 解决Flex定位在IOS弹出键盘失效的方案
- uva11235 Frequent values
- PDO中错误处理
- Linux开发工具之gdb