谈谈对布局文件、自定义控件、Fragment、Activity的认识

来源:互联网 发布:金淘店管软件多少钱 编辑:程序博客网 时间:2024/05/22 15:26
  1. 布局文件:布局文件把Android的界面编程给分离了出来,是一个特别好解耦。其实也可以不用布局文件,完全可以用Java代码写一套布局。布局文件中的一些标签其实都是系统内置的视图类(LinearLayout、TextView、EditText)或自己定义的视图类(继承后重造、系统类的组合、完全自己绘制以及事件控制)形如“com.example.uidiy.TitleLayout”。一般视图都只是负责界面的控制(动画、事件响应、少量数据保存),但是你也可以完全自定义控件封装常规视图类后,加上一些其他的不属于视图控制的逻辑代码,比如数据存储,网络等等,因为一般的视图类也会传入Context(这样看来Contex貌似把视图类与非视图类分开来)。但是这样封装完后其实就跟Activity没什么区别。所以视图类的设计遵循职责单一原则,就是要他只负责视图。
  2. 基于以上,Activity就是包含视图类与其他复杂逻辑操作(数据存储、网络、状态变化)的一个类,这样让视图类只负责进行UI方面的操作。
  3. 3.0新增了Fragment,一开始我接触Fragment我还以为他是从哪继承而来的,其实他谁都没有继承,自己就是顶级类。后来想明白,其实他也就像Activity一样,封装了视图与其他操作,他的位置位于视图类与Activity之间,但是他主要附属于Activity,他自己的Context都是通过onAttach(Activity a)来获得的。他有几个优点:轻量级,可复用。主要用于适配大屏幕上(使用Fragment后无论手机还是平板都可以适配),这样把一个Activity可以分为好几个小碎片,视图的碎片与功能的碎片。其实视图本来就是分块的,这样的话也可以新建几个类分别封装分块的视图与一些逻辑功能,其实这就是Fragment。一个Activity可以联系一个或好几个Fragment,大屏幕就是好几个,适配到手机上就是一个Activity一个,这样就完成了适配平板。看到一个Activity只联系一个Fragment,想到Fragment的位置以及重量就是处于视图和Activity之间。
  4. 简单视图+少量逻辑=Fragment
    复杂视图+大量逻辑=Activity
    Fragment的闭包为Activity
  5. Fragment其实就是1中所提到的“自定义控件,视图封装其他逻辑操作”的所描述的形式,也就是自定义控件时并没有只包含视图操作,还包括了其他逻辑操作。相似的,布局文件中布局管理器标签也是包含< fragment>,形如自定义控件的标签< com.example.uidiy.TitleLayout/>,只不过< fragment>标签内用属性name表明要实例化的类,但是自定义控件的标签名就表明了要实例化的类。其实他们还是很相像的,Fragment比自定义控件多了些视图之外的逻辑操作。
0 0
原创粉丝点击