简单测试了一下 requestDisallowInterceptTouchEvent的使用:

两个类:

public static class myView extends View {@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubint action = MotionEventCompat.ACTION_MASK & event.getAction();Log.e("FYF", "myView " + SystemUtils.motionEventToString(event));if (action == MotionEvent.ACTION_DOWN) {getParent().requestDisallowInterceptTouchEvent(true);}return true;}}

public static class myLinearLayout extends LinearLayout {@Overridepublic boolean onInterceptTouchEvent(MotionEvent ev) {// TODO Auto-generated method stub//return super.onInterceptTouchEvent(ev);int action = MotionEventCompat.ACTION_MASK & ev.getAction();if (action == MotionEvent.ACTION_DOWN) {return false;} else {return true;}}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stubLog.e("FYF", "myLinearLayout " + SystemUtils.motionEventToString(event));return true;}}

在MyLinearLayout里放一个myView,

MyLineaLayout在interceptTouchEvevnt时,如果action 是 ACTION_DOWN, 那么就return false,将event继续传递给myView,

否则就自己直接截获,


myView没有requestDisallowInterceptTouchEvent(true):

E/FYF (11126): myView ACTION_DOWN
E/FYF (11126): myView ACTION_CANCEL
E/FYF (11126): myLinearLayout ACTION_MOVE
E/FYF (11126): myLinearLayout ACTION_MOVE
......................................
E/FYF (11126): myLinearLayout ACTION_UP


myView 运行了requestDisallowInterceptTouchEvent(true):

E/FYF (12069): myView ACTION_DOWN
E/FYF (12069): myView ACTION_MOVE
E/FYF (12069): myView ACTION_MOVE
......................................
E/FYF (12069): myView ACTION_UP

更多相关文章

  1. android之检查service运行状态函数
  2. 【Android学习三】相关指令操作
  3. 获取android正在运行的所有app进程
  4. 怎样用 C/C++ 开发一个原生程序运行在 Android(安卓)下而不用 AD
  5. android之NDK(jni)开发笔记1——运行第一个NDK程序
  6. android运行C程序以及C程序在android下的编译
  7. 使用jni接口完成android本地程序的运行--具体的操作
  8. 使用jni接口完成android本地程序的运行--具体的操作
  9. android工程下运行main方法的配置方法

随机推荐

  1. golang获取当前时间是第几周
  2. golang如何利用多核
  3. golang 如何运行
  4. golang 如何优化
  5. golang 如何处理死锁
  6. golang中如何比较字符串是否相等
  7. golang如何判断channel已经close
  8. golang 如何并发
  9. golang如何调试
  10. golang 如何实现微服务