【转载】Fragment中通过回调获得实现Activity中的onTouchEvent函数
2015-12-14 13:42
337 查看
摘要:本文介绍如何通过回调函数来实现Fragment获得其所属的父类Activity中的onTouchEvent函数,并进行相应处理 该方法分为两步,首先是在父类Activity中,构造一个回调接口,并向外提供注册和销毁该回调接口的方法。然后在Activity的dispatchTouchEvent函数中遍历所有注册了该回调接口的对象,分发onTouchEvent事件。 /** * 回调接口 * @author zhaoxin5 * */ public interface MyTouchListener { public void onTouchEvent(MotionEvent event); } /* * 保存MyTouchListener接口的列表 */ private ArrayList<MyTouchListener> myTouchListeners = new ArrayList<MainActivity.MyTouchListener>(); /** * 提供给Fragment通过getActivity()方法来注册自己的触摸事件的方法 * @param listener */ public void registerMyTouchListener(MyTouchListener listener) { myTouchListeners.add( listener ); } /** * 提供给Fragment通过getActivity()方法来取消注册自己的触摸事件的方法 * @param listener */ public void unRegisterMyTouchListener(MyTouchListener listener) { myTouchListeners.remove( listener ); } /** * 分发触摸事件给所有注册了MyTouchListener的接口 */ @Override public boolean dispatchTouchEvent(MotionEvent ev) { // TODO Auto-generated method stub for (MyTouchListener listener : myTouchListeners) { listener.onTouchEvent(ev); } return super.dispatchTouchEvent(ev); } 复制代码 然后是在Fragment中的处理,首先需要声明一个父类Activity中的回调接口的对象,然后实现该回调接口中的onTouchEvent方法。并加上自己的处理。同时需要在该Fragment的初始化函数中,调用父类Activity的registerMyTouchListener函数来注册自己声明的父类Activity中的回调接口的对象,以便把自己加入到父类Activity的事件分发的接收对象列表中。 /** * Fragment中,注册 * 接收MainActivity的Touch回调的对象 * 重写其中的onTouchEvent函数,并进行该Fragment的逻辑处理 */ private MainActivity.MyTouchListener mTouchListener = new MyTouchListener() { @Override public void onTouchEvent(MotionEvent event) { // TODO Auto-generated method stub if(event.getAction() == MotionEvent.ACTION_UP){ //逻辑处理 } } }; //在该Fragment的构造函数中注册mTouchListener的回调 ((MainActivity)this.getActivity()).registerMyTouchListener(mTouchListener); 复制代码 |
相关文章推荐
- Android中AsyncTask使用详解
- android下拉刷新功能---教你实现简单的ListView下拉刷新
- 下拉框里根据选择项不同,显示的图片也不同
- mssqlserver SQL注释快捷键
- AngularJS Bootstrap
- 传智播客助你尽快走出大学毕业后的迷茫
- js 静态私有变量
- DNS解析过程原理
- 理想很丰满--现实很骨感
- 1.scala环境变量配置
- Android Studio 单元测试
- 对java的一些认识
- MySQL数据库性能优化之缓存参数优化
- 常用公共DNS服务器地址
- C Coding Standard
- AngularJS 表单
- Activity生命周期一般解析
- Qt的一些鲜为人知但是非常有用的小功能
- Java开发中的23种设计模式详解(转)
- GDI图片分割(C++)