如何解决ViewFlipper的onClick和onTouch的冲突事件

前段时间一直在做一个新功能--状态栏的快捷方式如下图所示:

如何解决ViewFlipper的onClick和onTouch的冲突事件_第1张图片

通知界面和开关界面进行切换时用到了ViewFlipper,但是有一个比较棘手的问题,效果要做到既能通过手势来翻页切换图片,而且ImageView还需要设置点击事件,程序出现如下问题:要不就是OnClick事件把OnTouch事件拦截了,不执行ViewFlipper的OnTouch事件,要不就是ViewFlipper的OnTouch事件执行的同时也执行了ImageView得OnClick事件,还有就是,onClick时间执行了,但是小图标后面的蓝色背景没有显示!

在网上搜索了好久,一直没有找到好一点的方法,最后只能自己在onSingleTapUp方法里做文章了!

在说本人解决思路之前,让我们看一下对于onClick和onTouch冲突事件一般情况下是如何解决的:一般情况下,会根据系统在onTouchEvent事件中的处理,来决定onDown和Up事件返回true还是false,从而决定是否执行onClick事件---至于onClick和onLongClick和onTouch事件的处理机制,网上有很多资料,这里就不多说了。

但是在这因为用到了手势类,而它又有自己的onTouchEvent事件,因此不能单单靠修改返回值来决定执行的是onClick还是onTouch事件

 

但是,通过代码走查,本人发现无论是onClick还是onTouch,手势类都会调用到onSingleTapUp事件,因此在此方法中作文章比较妥当。本人做法就是根据onsingleTapUp方法的参数MotionEvent来判断用户点击的绝对坐标e.getRawX()和e.getRawY(),从而判断用户点击的是哪一个ImageView,方法虽然粗糙原始,但是确实能达到效果

希望对徘徊在onClick和onTouch事件的cxy有所帮助

你可能感兴趣的:(UP)