android面向holder编程,再度封装代码
2015-08-27 14:34
337 查看
概述
在我们实际开发过程中,当我们软件的功能做得多的时候,这个时候我们的代码量也就越来越大了,如果我们不把代码进行封装,不仅让我们开发的时候变得困难,而且不利于维护,特别是团队开发的时候,如果我们一个Activity就几百行,当然几百行也算是少的了,甚至可能上千行。这个时候如果让你看几千行的代码,你是不是觉得好费劲呢,而且开发起来也变得困难了。面向holder编程思想其实很简单,就是简单的把一个大的复杂的功能或者页面分成几个小的功能分别去实现,下面我们看一张图片来看看面向holder编程思想
这个是我从和阅读上面截的一张图,我们来分析一下要实现这样一个相对复杂的界面功能,我们可以怎么做。下面我们来对这个界面进行划分一下
如果你觉得这种界面功能不复杂的话,你就可以不划分,直接写在个布局里面,然后在一个Activity中完成相应的界面功能,当你的activity里面的代码就大了好多,你也可以有其他的划分方法。
当我们把上面的复杂界面划分好了之后我们可以在这个activity的布局文件里面只要写上4个FrameLayout或者RelativeLayout,然后在代码中实例化它们,之后开始每个小功能在holder里面写了
在holder里面我们可以这样写[code]import android.content.Context; import android.view.View; public class Holder { private View rootView; private Context ct; public Holder(Context ct) { this.ct = ct; init(); initView(); initData(); } /** * 可以在这里完成一些初始化的操作,这些操作可以在布局没有实例好之前初始化 */ private void init() { } /** * 在这里面实例化布局相关的组件 */ private void initView() { } /** * 在这里可以为相应的组件添加事件,初始化状态,或者联网请求数据 */ private void initData() { } /** * 得到该holder维护的view * @return 该holder维护视图的根布局 */ public View getRootView() { return rootView; } }
完成了上面的简单的holder模型之后,之后在initView和initData方法完成的操作就和在activity或者fragment中的操作相同了
在此之后我们只要在activity中创建该Holder,然后在activity中为之前写的FrameLayout或者RelativeLayout调用addView
方法把从holder.getRootView()
得到的view
添加到里面即可,这个时候你不仅会发现Activity里面的代码变少了很多,而且你开发起来也会根据清晰,逻辑更加简单。
以后在开发中可以用到这种编程思想,把我们的代码尽可能的减少,把复杂的界面划分成几个小的模块,逐一实现,逻辑放在各自独立的holder里面,同时我们可以结合许多开源的框架来简化我们的开发。
总结一下,面向holder编程,实际上是对代码的再度封装,简化了我们开发的成本。
相关文章推荐
- Android ImageView配置android:layout_height="wrap_content"时上下会有padding存在
- android apk与apk 之间互相通信--如何自定义权限
- 从今天起就要陆续坚持写博客.记录自己在android上的努力.
- 【Android】Suggestion: use tools:overrideLibrary="" to force usage
- 收集android上开源的酷炫的交互动画和视觉效果:Interactive-animation
- Android-使用xUtils实现简单断点续传(主要代码)
- Android 之窗口小部件详解
- Android 4.4 Watchdog机制
- android 初级__进阶__总结_转载
- Android平台利用ZXING生成二维码图片
- Github Android开源项目分类汇总
- Android解决GridView异步加载大量图片时出现Out Of Memory问题00M
- Android 使用ORMLite打造万能泛型Dao简化数据持久化层
- Android设置虚线、圆角、渐变
- android,在fragment中使用listview,不使用listfragment
- [Android] 输入系统(三):加载按键映射
- Android View 的事件处理和分发原理简析
- Android studio中正确引入so文件的方法
- 快速掌握 Android Studio 中 Gradle 的使用方法
- 0.0.1 Android开发系列——什么是Android