fragment
最初认识fragment 是说为了解决平板屏幕大,一个屏幕上可以展示不同的内容 看起来像是多个板块;多个板块互相不干涉,就像是网页的div 一样 ;
fragment 碎片 可以认为是一种控件,和button什么的一样;
所以他是可以添加到acivtity上
比如 定义left_fragment.xml 和 right_fragment.xml后,我们可以直接在mainacivity中
这样就把某个fragment 放在了activity中了
那么什么是fragment 什么是activity呢?
事实上我们在xml书写的都只是布局文件 没有任何区别 将其区分为fragment 和actitivity是因为如下面的函数:
|
|
这部分函数应该称之为控制器 (在mvc模型中),拿来一个布局文件将其定义为fragment,activity也是类似的原理,生命周期与相关函数不就是写在函数中的嘛
这样就不难理解,因为一个大布局可以套多个布局,所以activity理所应当可以加进来多个fragment-碎片;
UI fragment
原来我们一般使用多个activity 当做程序的不同页面,现在我们有了新帮手,用fragment构建页面,activity负责管理;这样好处是有的,缺点也理所当然;
Fragment可以使你能够将activity分离成多个可重用的组件,每个都有它自己的生命周期和UI。
(此处copy)
Fragment可以轻松得创建动态灵活的UI设计,可以适应于不同的屏幕尺寸。从手机到平板电脑。
Fragment是一个独立的模块,紧紧地与activity绑定在一起。可以运行中动态地移除、加入、交换等。
Fragment提供一个新的方式让你在不同的安卓设备上统一你的UI。
Fragment 解决Activity间的切换不流畅,轻量切换。
Fragment 替代TabActivity做导航,性能更好。
Fragment 在4.2.版本中新增嵌套fragment使用方法,能够生成更好的界面效果。
Fragment做局部内容更新更方便,原来为了到达这一点要把多个布局放到一个activity里面,现在可以用多Fragment来代替,只有在需要的时候才加载Fragment,提高性能。
可以从startActivityForResult中接收到返回结果,但是View不能。
关于实现
首先 我们要有 一个布局文件 ,有一个activity类,现在我们其实可以加载布局,但这样布局就变成了一个activity。
我们要的是fragment,所以这个布局的显示,将布局变成一个view的函数一定在他自己所属的fragment函数中;
xml文件:fragment_crime.xml
现在我们获得了一个view对吗?
程序有些复杂,不用管太多,我们知道通过FragmentManager 把碎片放进来了;代码多了很多,逻辑也很复杂,但碎片实实在在变得独立化了,他与activity的关系更弱。至于FragmentManager具体实现 谷歌吧;
fragment的生命周期
这个是简单明了的生命周期描述
这个是与activity之间的比较 看起来也没什么大的区别
![这里写图片描述]
(http://img.my.csdn.net/uploads/201211/29/1354170682_3824.png)
但是下面这张,是不是觉得突然之间差距就很大。我还在学习,不太清楚,但是我很明白一点,功能越强大,就越复杂,所以关于fragment的话题只能以后再说了;