将ViewFilpper组建封装成一个View出现的onScroll() and onFlipping()方法无法响应事件的解决方案

来源:互联网 发布:计算机算法基础第三版 编辑:程序博客网 时间:2024/05/29 10:37

问题:


公司让我将所有的视图部分封装成一个控件,将来整个项目就直接new一下我的类就可以了,而在封装这个视图的时候,当然此视图里面包含ViewFlipper组件,实现了OnGestureListener接口,主要问题出现在OnGestureListener接口里面的方法实现时无法响应事件,这个接口需要实现onDown、onFling、onLongPress、onScroll、onShowPress、onSingleTapUp共6个方法,只有onFling、onScroll方法无法响应事件,而且都是滑动触摸事件,其它事件都可以正常响应。


解决方案:


在调用此自定义组件的Activity里面重写OnTouchEvent方法,实现内容为:

@Overridepublic 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里面。


原创粉丝点击