上一篇讲到

Android SDK开发 -- TitleBar重构 (代理模式的使用)


然后补了一下代理设计模式。参考书籍《大话设计模式》


改善一下之前的代码设计。


先来定义一个接口

/** * AppTitle接口 *  * @author coffee <br> *         2016-1-2 下午10:17:53 */public interface AppTitle {/** * 初始化Title view */public void initTitle();/** * 设置app的title *  * @param leftTitle * @param middleTitle * @param rightTitle */public void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle);}

接口的实现

public class TitleMgr implements AppTitle {

TitleMgr的实现参考上一篇文章


然后改善一下BaseActivity的类( 该类相当于AppTitle的代理类,TitleMgr是AppTitle的实现类)
public abstract class BaseActivity extends Activity implements Handler.Callback, AppTitle {private AppTitle appTitle; @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);  <span style="white-space:pre"></span>//....findViewById();} /** * 初始化title View */protected void findViewById() {initTitle();}@Overridepublic void initTitle() {appTitle = new TitleMgr(getContext(), findViewById(android.R.id.content));appTitle.initTitle();}/** * 设置app的title栏 *  * @param leftTitle * @param middleTitle * @param rightTitle */@Overridepublic void setTitle(TitleRes leftTitle, TitleRes middleTitle, TitleRes rightTitle) {appTitle.setTitle(leftTitle, middleTitle, rightTitle);}


BaseFragment的实现省略。。与Activity类似


至于为什么要定义一个接口AppTitle,而不是直接拿实现类TitleMgr来用。。

目前表示不是很理解。 网上所有的示例都采用接口来实现。。。。。。大概是为了统一代理类和实现类的操作吧。。




更多相关文章

  1. No.11 使用firewall配置的防火墙策略的生效模式
  2. LeakCanary 的使用介绍
  3. Android(安卓)Activity launchMode研究
  4. Android启动模式—你需要知道的一切
  5. Android(安卓)4.2 BT系统之蓝牙关闭过程全跟踪
  6. camera V4L2 FIMC
  7. Android自定义Dialog弹框效果
  8. Android(安卓)-- Activity值传递
  9. 未捕获异常的处理

随机推荐

  1. Android(安卓)Camera 架构简析2
  2. Rooting Android
  3. android out of memory(OOM)
  4. android WebView解析 调用html5页面
  5. 4种必须知道的Android屏幕自适应解决方案
  6. Android studio 简单的多线程
  7. Android(安卓)framework——Activity的启
  8. Android中对后台任务线程性能的说明及优
  9. Android: Launch the HOME screen
  10. Android Battery一些信息获取方法