问题:
公司让我将所有的视图部分封装成一个控件,将来整个项目就直接new一下我的类就可以了,而在封装这个视图的时候,当然此视图里面包含ViewFlipper组件,实现了OnGestureListener接口,主要问题出现在OnGestureListener接口里面的方法实现时无法响应事件,这个接口需要实现onDown、onFling、onLongPress、onScroll、onShowPress、onSingleTapUp共6个方法,只有onFling、onScroll方法无法响应事件,而且都是滑动触摸事件,其它事件都可以正常响应。
解决方案:
在调用此自定义组件的Activity里面重写OnTouchEvent方法,实现内容为:
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
// return this.detector.onTouchEvent(event);
return helpView.onTouchEvent(event);
}
helpView是我做的那个自定义控件的对象,当然我封装的自定义控件里面也必须重写OnTouchEvent方法,方法里面的内容是调用
return this.detector.onTouchEvent(event);
我一直没有明白,既然其它事件都可以获取到,为什么就这两个方法的事件获取不到!我想可能是被Activity阻截了,所以需要调用
return helpView.onTouchEvent(event);将事件传给自定义View里面,解释矛盾牵强,只能暂时这么理解着,这个问题记得我在做键盘事件处理的时候也遇到过,处理办法也是在调用的Activity里面重写键盘事件,将事件传递给自定义View里面。