研究

android对OnTouchListener、OnClickListener等事件响应的研究

女生的网名这么多〃 提交于 2019-12-09 17:48:48
前几天遇到一个小问题,就是给listview添加onItemClickListener、onItemLongClickListener、onTouchEvent三种事件的 时候,只执行了onTouchEvent事件,而其他的两个事件未执行,解决办法:在对应的onTouchEvent的action里面设置return false;当执行到该action的时候就会返回false,前两个事件就会执行了。解决方法很简单,为此还特意研究了一下View对事件响应的流程。 Android的各个View之间的关系是一颗树,下面的子View都是在父View的基础上建立的,可以看成子View叠加在父类的View上。下面我们来看一下两种不同情况的事件处理。 1、给同一个View设置了OnTouchEvent事件、OnClickListener事件与OnLongClickListener事件,当点击View的时候,事件的响应顺序是: Touch事件的ACTION_DOWN -> ACTION_UP -> OnClick/OnLongClick。 该View是怎么响应这个点击动作的呢? 首先,该View会先响应ACTION_DOWN事件,并返回一个boolean值,这里有两种判断: a:返回True,表示该View接受此按下动作,就是说这个点击动作的按下操作被中止,然后就是响应ACTION_UP事件