实现 Fragment 触摸事件处理
设置触摸事件可以先在主Activity中设置一个接口如下 :
private ArrayList<MyOnTouchListener> onTouchListeners = new ArrayList<MyOnTouchListener>(
10);
@Override
public boolean dispatchTouchEvent(MotionEvent ev) {
for (MyOnTouchListener listener : onTouchListeners) {
listener.onTouch(ev);
}
return super.dispatchTouchEvent(ev);
}
public void registerMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
onTouchListeners.add(myOnTouchListener);
}
public void unregisterMyOnTouchListener(MyOnTouchListener myOnTouchListener) {
onTouchListeners.remove(myOnTouchListener) ;
}
public interface MyOnTouchListener {
public boolean onTouch(MotionEvent ev);
}
然后再在fragment中实例化一个Mainactivity.myOntouchlistener :
//在Fragment中注册事件
((MainActivity)getActivity()).registerMyOnTouchListener(myOnTouchListener);
public MainActivity.MyOnTouchListener myOnTouchListener = new MainActivity.MyOnTouchListener() {
@Override
public boolean onTouch(MotionEvent ev) {
//让GestureDetector先响应事件
boolean event = gesture.onTouchEvent(ev);
return event;
}
};
如果是在 Activity 中, 请看这篇文章 GestureDetector与ScrollView事件冲突解决