MotionEvent.ACTION_CANCEL的解析

对于事件分发中,我们重写

onTouchEvent的时候基本都知道
1 .MotionEvent.ACTION_DOWN:(对应手势按下的时候)
2.MotionEvent.ACTION_MOVE:(对应手势滑动的回调)
3MotionEvent.ACTION_UP:(对应手势抬起的回调)

基本我们都只处理这三个

我平常也处理这三个,只到今天遇到一个问题

我积分器的弹框中父类是一个scrollview

在up 的时候我会把录制语音的弹框关闭,但是有时候我up的时候关闭不了弹框

这个问题怎么解决呢?

这时我第一时间想到的是不是走了

MotionEvent.ACTION_CANCEL

这个事件呢?马上行动果然走了,果断在up那里加上这个,果然解决了问题

现在咋们来分析下MotionEvent.ACTION_CANCEL这个手势

这是一个国外的的解释----原文是这样的:

You receive this when a parent takes possession of the motion, for example when the user has dragged enough across a list view or scroll view that it will start scrolling instead of letting you press the buttons inside of it.  

意思是这样的:

当你的手指(或者其它)移动屏幕的时候会触发这个事件,比如当你的手指在屏幕上拖动一个listView或者一个ScrollView而不是去按上面的按钮时会触发这个事件。

对于事件分发的可以看这两篇文章     =====》     view的事件分发   ,自定义View的高级进阶

看了这个,咋们估计就明白了

因为我是在按录音的时候触动子类的事件,但是但我按住他不动的时候,相当于move事件弹框是没有消费的,向下分发留给了父类scrollView去消费了,这个时候计分器会收到ScrollView传给计分器的MotionEvent.ACTION_CANCEL事件。

这是鄙人的理解,希望对于遇到问题的朋友有帮助

猜你喜欢

转载自blog.csdn.net/xueyoubangbang/article/details/89238913