android事件分发机制
来源:互联网 发布:骚气的诗词 知乎 编辑:程序博客网 时间:2024/05/01 04:49
这是运行结果和总结:(代码详情见附件)
--------------------------------------------------------------------------------
09-04 10:38:20.124: D/TAG(29590): onTouch execute, action 触摸事件返回为假0
09-04 10:38:20.140: D/TAG(29590): onTouch execute, action 触摸事件返回为假2
09-04 10:38:20.158: D/TAG(29590): onTouch execute, action 触摸事件返回为假2
09-04 10:38:20.176: D/TAG(29590): onTouch execute, action 触摸事件返回为假2
09-04 10:38:20.195: D/TAG(29590): onTouch execute, action 触摸事件返回为假2
09-04 10:38:20.213: D/TAG(29590): onTouch execute, action 触摸事件返回为假2
09-04 10:38:20.232: D/TAG(29590): onTouch execute, action 触摸事件返回为假2
09-04 10:38:20.247: D/TAG(29590): onTouch execute, action 触摸事件返回为假2
09-04 10:38:20.247: D/TAG(29590): onTouch execute, action 触摸事件返回为假1
09-04 10:38:20.248: D/TAG(29590): onClick execute点击事件
--------------------------------------------------------------------------------
09-04 10:40:43.722: D/TAG(30998): onTouch execute, action 触摸事件返回为真0
09-04 10:40:43.744: D/TAG(30998): onTouch execute, action 触摸事件返回为真2
09-04 10:40:43.763: D/TAG(30998): onTouch execute, action 触摸事件返回为真2
09-04 10:40:43.775: D/TAG(30998): onTouch execute, action 触摸事件返回为真2
09-04 10:40:43.776: D/TAG(30998): onTouch execute, action 触摸事件返回为真1
--------------------------------------------------------------------------------
总结:
当触摸事件返回是假的时候,优先执行触摸事件,然后执行点击事件
当触摸事件返回是真的时候,执行触摸事件,不执行点击事件
如果 return true,事件会分发给当前 View并由dispatchTouchEvent方法进行消费,同时事件会停止向下传递;
如果 return false,事件分发分为两种情况:
1.如果当前View获取的事件直接来自 Activity,则会将事件返回给 Activity的onTouchEvent 进行消费;
2.如果当前View获取的事件来自外层父控件,则会将事件返回给父View的onTouchEvent 进行消费。
如果返回系统默认的super.dispatchTouchEvent(ev),事件会自动的分发给当前View的onInterceptTouchEvent方法。
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG", "onClick execute"+"点击事件");
}
});
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TAG", "onTouch execute, action "+"触摸事件返回为真" + event.getAction());
return true;
}
});
imageView.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TAG", "onTouch execute, action "+"触摸事件返回为假" + event.getAction());
return false;
}
});
- android事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android事件分发机制
- Android 事件分发机制
- Android 事件分发机制
- android 事件分发机制
- Android事件分发机制
- android 事件分发机制
- android事件分发机制
- Android 事件分发机制
- android事件分发机制
- android 事件分发机制
- android 事件分发机制
- Android 事件分发机制
- Android事件分发机制
- Android事件分发机制
- Android 事件分发机制
- 对于TextView某些字符设置点击事件和改变颜色
- 看着窗户外行走的路人,始终看不见你
- 堆栈内存分析2
- 欢迎使用CSDN-markdown编辑器
- [网络流24题] 24 骑士共存(二分图最大独立集,网络最小割)
- android事件分发机制
- file_get_contents介绍和 file_get_contents 实现curl 功能 增加超时的时间限制
- 六足机器人的步态分析与实现——1
- c++虚函数机制
- kafka--简介
- DOM对象和内置对象(上)
- HDU 3966 Aragorn's Story(树链剖分)
- JSON数据解析
- 【白书之路】1225 - Digit Counting 数字统计