android ViewParent requestDisallowInterceptTouchEvent 测试
16lz
2022-01-21
简单测试了一下 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
更多相关文章
- android之检查service运行状态函数
- 【Android学习三】相关指令操作
- 获取android正在运行的所有app进程
- 怎样用 C/C++ 开发一个原生程序运行在 Android(安卓)下而不用 AD
- android之NDK(jni)开发笔记1——运行第一个NDK程序
- android运行C程序以及C程序在android下的编译
- 使用jni接口完成android本地程序的运行--具体的操作
- 使用jni接口完成android本地程序的运行--具体的操作
- android工程下运行main方法的配置方法