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

  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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值