[android] 通过比对进行容器联动
2016-06-29 11:22
435 查看
当中间容器变化之后,标题栏也要跟着变化
设计个比对依据:
抽象类BaseView中定义抽象方法,每个继承的View都必须实现,为自己的界面定义一个唯一的int常量,作为比对依据
降低容器之间的耦合度:
中间容器干了其他容器的活,耦合度很高,中间容器应该只需要去“通知”其他容器就可以了
使用观察者模式为中间容器变动增加监听,解决如果有多个关联容器的问题
观察者模式:
被观察的对象======>中间容器
观察者============>标题容器
MainActivity.java
MiddleManager.java
TitleManager.java
IndexView.java
ConstantValue.java
1.中间容器变成被观察的对象,继承Observable
2.标题容器变成观察者,实现Observer接口
3.建立观察者和被观察者之间的关系,标题被增加到中间容器的数组里面
4.一旦中间容器变动,修改boolean值,然后通知所有的观察者.update()
设计个比对依据:
抽象类BaseView中定义抽象方法,每个继承的View都必须实现,为自己的界面定义一个唯一的int常量,作为比对依据
降低容器之间的耦合度:
中间容器干了其他容器的活,耦合度很高,中间容器应该只需要去“通知”其他容器就可以了
使用观察者模式为中间容器变动增加监听,解决如果有多个关联容器的问题
观察者模式:
被观察的对象======>中间容器
观察者============>标题容器
被观察的对象{ List<观察者> lists; boolean isChange=false; setChange(){ isChange=true; } notify(){ for(观察者 item:lists){ item.update(); } } }
MainActivity.java
/** * 初始化主体 */ public void initMiddle() { mainContainer=(RelativeLayout) findViewById(R.id.il_main); MiddleManager.getInstance().setMainContainer(mainContainer); MiddleManager.getInstance().loadView(LoginView.class); //添加观察者 MiddleManager.getInstance().addObserver(TitleManager.getInstance()); }
MiddleManager.java
/** * 修改标题 */ public void changeTitle(){ setChanged(); notifyObservers(currentView.getID()); }
TitleManager.java
/** * 修改标题 */ @Override public void update(Observable observable, Object data) { if(data!=null && StringUtils.isNumeric(data.toString())){ switch (Integer.parseInt(data.toString())) { case ConstantValue.VIEW_INDEX: showLoginTitle(); break; case ConstantValue.VIEW_LOGIN: showUnloginTitle(); break; } } }
IndexView.java
/** * 返回id */ @Override public int getID() { return ConstantValue.VIEW_INDEX; }
ConstantValue.java
package com.tsh.lottery; /** * 常量类 * @author taoshihan * */ public class ConstantValue { public final static int VIEW_INDEX=1;//首页界面id public final static int VIEW_LOGIN=2;//登陆界面id }
1.中间容器变成被观察的对象,继承Observable
2.标题容器变成观察者,实现Observer接口
3.建立观察者和被观察者之间的关系,标题被增加到中间容器的数组里面
4.一旦中间容器变动,修改boolean值,然后通知所有的观察者.update()
相关文章推荐
- 使用android stdio1.5进行junit测试
- Android 退出应用
- 移动支付之Android HCE的基本使用
- android 判断指定日期是否为今天昨天
- Android事件分发机制完全解析,带你从源码的角度彻底理解(下)
- Android Studio 编译Errors 解决笔记
- Android native与HTNL5进行交互
- 跟我学Android之三 常用视图
- 跟我学Android之三 常用视图
- 跟我学Android之三 常用视图
- Android事件分发机制完全解析,带你从源码的角度彻底理解(上)
- android保留两位小数的方法
- Android自定义类似ProgressDialog效果加载动画
- Android5.0新特性CollapsingToolbarLayout图片拉缩
- Android Studio快捷键
- Android中ViewPager的PagerTabStrip与PagerTitleStrip用法实例
- EventBus与Rxandroid之间的比较
- android系统-3G4G通信模块适配
- Android Otto框架浅析
- Android动画进阶—使用开源动画库nineoldandroids