其实之所以《从源码角度分析android事件分发处理机制》这篇博客,是因为在此之前一个android群友遇到一个滑动冲突问题,然后帮助其解决过后才想起来要仔细分析研究,并完成了文章开头索索的那篇博客。。
该群友的应用问题场景是:一个FrameLayout,里面嵌套一个ListView.通过手指左右的滑动来显示和关闭FrameLayout。他滑动打开/关闭FrameLayout的效果是实现了,但是点击ListView的某一个item的时候,onItemClick事件始终不会执行。
该群友当时的处理方法:重写FrameLayout的onTouchEvent,使之返回true:
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
....
break;
case MotionEvent.ACTION_MOVE:
if (向左滑动) {
//关闭FrameLayout
closeDraw();
} else if (向右滑动) {
//打开FrameLayout
openDraw();
}
break;
case MotionEvent.ACTION_UP:
break;
}
return true;
}
public boolean onInterceptTouchEvent(MotionEvent event) {
return true;
}
很明显这样做的错误很明显,让FrameLayout直接