好久没写过随笔了......windows phone生态没起来,属于.net阵营的我最近工作不是太忙,闲暇之余就心血来潮开始研究安卓。先简单扯两句这几天学习下来对java事件监听机制的一点感触。客观地讲,java的事件监听机制相比.net好原始,暂不说委托、lamda、泛型等的 ...
好久没写过随笔了......windows phone生态没起来,属于.net阵营的我最近工作不是太忙,闲暇之余就心血来潮开始研究安卓。先简单扯两句这几天学习下来对java事件监听机制的一点感触。客观地讲,java的事件监听机制相比.net好原始,暂不说委托、lamda、泛型等的繁琐,仅一个事件监听,就需要各种listener才能实现,比如安卓里到处都是view.setOnXXXXListener。被C#“语法糖”和宇宙第一IDE惯坏的我真心有点不习惯,于是就决定写个工具来封装这些烦人的listener。开始切入正题。
- 目标
- 成果
- 实现概况
- 具体实现及代码
- 总结
一、目标
摆脱安卓里各种listener的繁琐,像写一般的方法似的写各种事件。
二、成果
只要写一个类(这里以MainActivityEvent命名的类为例)继承EventManager,然后在对应的MainActivity里的onCreate方法里初始化这个类(new MainActivityEvent(this))即可完成注册。剩下的就只需要在MainActivityEvent类里写对应的事件响应逻辑就可以了。
三、实现概况
3.1 MainActivity里注册。
3.2 MainActivityEvent的实现。
3.3 封装的相关类型。
四、具体实现及代码
4.1 EventType.java
package com.example.personal.events;/** * Event type. */public enum EventType { /** * signature: (View v, int keyCode, KeyEvent event) * return: boolean. */ OnKey, /** * signature: (View v, MotionEvent event) * return: boolean. */ OnTouch, /** * signature: (View v, MotionEvent event) * return: boolean. */ OnHover, /** * signature: (View v, MotionEvent event) * return: boolean. */ OnGenericMotion, /** * signature: (View v) * return: boolean. */ OnLongClick, /** * signature: (View v, DragEvent event) * return: boolean. */ OnDrag, /** * signature: (View v, boolean hasFocus) * return: void. */ OnFocusChange, /** * signature: (View v) * return: void. */ OnClick, /** * signature: (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) * return: void. */ OnCreateContextMenu, //TODO: Not supported for api version issues or other special reasons.// /**// * signature: (View v)// */// OnViewAttachedToWindow,// /**// * signature: (View v)// */// OnViewDetachedFromWindow,// /**// * signature: (View v)// */// OnContextClick,// /**// * signature: (int visibility)// */// OnSystemUiVisibilityChange}
海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com
原标题:事件监听:诀别Android繁琐的事件注册机制——view.setOnXXXXListener 滚犊子
关键词:Android
*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:
admin#shaoqun.com
(#换成@)。