Android onClick和滑动事件冲突解决

在Android开发中,如果一个Activity里面同时继承实现了 onClickListener、onLongClickListener、onGestureListener, 此时手指在点击、滑动、长按屏幕是各个事件处理的顺序是如何的呢,通过实际项目中写日志得到如下的结果:


点击松开: onDown / onShowPress(稍长会有) / onSingleTapUp /onClick
滑动松开: onDown / onScroll(多次) / onFling / onClick / onLongClick
长按松开:onDown / onShowPress / onLongClick / onLongPress
长按并滑动后松开: onDown /onShowPress / onLongClick / onScroll(多次) / onFling


知道这个顺序后,就知道如何处理各个需要的逻辑了,同时需要注意一点:在每个过程中,任何一个事件里面return true了,后面的就将不再执行,如果要同时执行多个事件,可以在每个事件内部处理完后,return false, 后面的事件就将继续进行


1:在onDown中设置this.flipper.setClickable(true); 然后在onFling方法中this.flipper.setClickable(false);


2:public boolean onTouchEvent(MotionEvent event) {
    // 执行touch 事件
    super.onTouchEvent(event);
    return this.detector.onTouchEvent(event);
}
//这个方法会先执行,当返回为true时,才执行onTouchEvent 方法
public boolean dispatchTouchEvent(MotionEvent ev){
    //先执行滑屏事件
    detector.onTouchEvent(ev);
    super.dispatchTouchEvent(ev);
    return true;
}

发布了17 篇原创文章 · 获赞 2 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/caizehui/article/details/46881455