在Fragment中使用GestureDetector

来源:互联网 发布:javascript 线程等待 编辑:程序博客网 时间:2024/06/05 03:05

  最近在Fragment中要使用到GestureDetector,但是在Fragment中么有onTouchEvent(MotionEvent event)方法,这下还真是难办了...抓狂但仔细想了想,每个Activity都会有onTouchEvent(MotionEvent event)方法,况且Fragment就是一个Activity的组成部分,那我们是不是可以用某一种机制来传递这种情况呢》?哈哈,恭喜你答对了,是的,我们之间使用观察者模式来处理这种情况

    在Activity中,我们任然复写onTouchEvent(MotionEvent event),不过参数的event需要用我们的Fragment中的GestureDetector对象的event代替而已,那么问题的关键就是获取不同Fragment中生成的不同的GestureDetector对象了。。这里我们假设你要使用到多个Fragment....关键代码:

  

// 回调接口public interface MyTouchListener{public void onTouchEvent(MotionEvent event);}public ArrayList<MyTouchListener> listeners = new ArrayList<MainActivity.MyTouchListener>();public void registerTouchListener(MyTouchListener listener){listeners.add( listener );}public void unRegisterListener(MyTouchListener listener){listeners.remove( listener );}
在Activity中通过上面的代码,我们已经准备好了来接受一系列的listener,而这些listener会在不同的Fragment中实例化

Fragment关键代码:

主要是实现MyTouchListener接口,复写里面的onTouchEvent,此时我们的Fragment是不是也有了onTouchEvent方法呢,接下来用你的GestureDetector对象该干嘛干嘛

来个我写的demo:


2 1
原创粉丝点击