安卓代码优化(事件篇)
来源:互联网 发布:小灰狼打印软件注册码 编辑:程序博客网 时间:2024/06/05 15:11
安卓代码优化(事件篇)
安卓的Event控制器
第一次寫博客,练练手,写的不好,欢迎交流。
话不多说,直接干!
目录
- 安卓的Event控制器
- 目录
- Event控制器介绍
- 类说明
- 代码块
- 代码思路解析
- 总结
Event控制器介绍
Event控制器,这个我自编的一个名字;因为我写不知道叫什么,随口叫了一个名字,不用纠结。统一处理事件的控制器。
类说明
Event类需要:
代码块
主接口,StwMvpView (命名随意):
public interface StwMvpView<M> extends HttpLifeCycleView { /** * 加了个前缀 stw 表明 不是eventBus的event * @param tag 要传输的功能号 * @param json 要传输的数据 */ void stwEvent(int tag, String json); .....}
/** * @author jwkill@foxmail.com * @Description :demo界面 * @date 20160411 */public class AFragment extends BaseFragment{ @Bind(R.id....) AView aView; //当View 封装的使用 @Bind(R.id.angel_lelvel_up) TextView bandPhone; //当跳转时候的使用 //这是eventBus 相比于eventBus个人感觉方便很多 @Override public void onEventMainThread(Event event) { super.onEventMainThread(event); switch (event._id) { case R.id.event_label_add: case R.id.event_label_delete: getPresenter().getLabels(); break; } } @Override protected void initView(View view) { super.initView(view);= //去绑定手机界面 回传结果 lelvel_up.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(mvpView.getContext(), BindPhone.class); fragment.startActivityForResult(intent, ActionType.BIND_PHONE) } }); aView.setStwMvpView(this); getPresenter().getLabels(); } @Override public void stwEvent(int tag, String json) { switch (tag) { case ActionType.DEFAULT: AView事件过来啦,id就是Json!Json可以是任何东西。 break; case ActionType.BIND_PHONE: //可以在 if (BoolEnum.isTrue(json)) setNotice("绑定成功!"); else { setNotice("绑定失败!"); } break; } }}
public class AView extends FrameLayout { TextView clickView; private void initView(Context context) { View.inflate(context, R.layout.angel_store_top_view, this); recommendTip = (TextView)findViewById(R.id.xxx); recommendTip.setOnclicklistener{ stwMvpView.stwEvent(ActionType.DEFAULT, id); }; } public void setStwMvpView(StwMvpView stwMvpView) { this.stwMvpView = stwMvpView; }
public class BindPhone { setResult(1);//1成功 0失败 finish();}
public class BaseFragment imp.. StwMvpView{ @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case ActionType.BIND_PHONE: stwEvent(ActionType.BIND_PHONE, resultCode + ""); break; default: super.onActivityResult(requestCode, resultCode, data); break; } }}
代码思路解析:
第二个例子
View封装使用:AFragment 想获取AView 的点击事件;常见的写法就是写一个回调AFragment 设置AView的回调,AView点击通过回调告诉AFragment。其实StwMvpView本质才不多就是这个,只想把这个回调去写进的你的主接口。可以少些很多代码 interface onclick、setOnclick、this.onclick.setOnclick等等。 简化了这个过程。
第一个例子流程图:
很简单吧
假设AFragment 要去绑定另一个界面绑定一个手机号。那么肯定是跳转,然后各种setResult等等。很多繁琐的代码。
假设使用基类接受对应功能号的返回值,把回调回来数据通过stwEvent告诉子类。可以简化这个操作流程。
当然有人会说 你这简化个毛线,流程更复杂了。
但是如果你有一个BFragment要绑定手机,那么只是两行代码:
1.StwActivityChangeUtil.toBindPhone( getMvpView()); 2.case ActionType.BIND_PHONE: setNotice("绑定成功!");
这时候就简单了。
特别是事情处理在统一的方法中进行了处理,方便管理;不是这里写一快,那里写一块。像我们这么专一 不朝三暮四的人肯定都是这样的对不对。下面附上图解
第二个例子流程图:
总结
这里的代码不是很方便复制 黏贴;主要还是提供一种思路。完全的代码复制是没有什么软用,师傅领进门、修行在这个人(当然我不是师傅,是刚写博客的渣渣);后面我会再发一些封装思路和实际开发需要用的设计思路。
开发比较忙,没有什么时间写博客。这个是挤事件写的,错别字很多,请见谅。
注意:转发请注明转帖链接**http://blog.csdn.net/u011850446/article/details/71433900。
- 安卓代码优化(事件篇)
- 安卓代码优化(定位篇)
- 安卓代码优化(3)
- 安卓性能优化之java(android)代码优化
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:基本事件篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化:事件委托篇
- jQuery代码优化 事件委托篇
- 素数测试
- 条款6:若不想使用编译器自动生成函数,就该明确拒绝
- 【HDU6024】Building Shops(简单dp)
- Linux之tcpdump使用
- awk命令个人总结(以CentOS 6.3环境下shell为例)
- 安卓代码优化(事件篇)
- Maven手动添加本地仓库
- 【转载】----Java进阶资源汇总
- 希尔排序算法
- 202. Happy Number (tortoise and the hare algorithm)
- Android Xml高级用法
- 代理模式
- PRML读书笔记(一)
- 《大型数据库作业4.2》ORACLE特殊数据查询技术