外观
OnTouchListener onTouchEvent 和 onClick 有什么关系?
标准回答
在 View 分发触摸时,满足条件的 OnTouchListener 通常先于 onTouchEvent 被调用。如果 OnTouchListener 返回 true,表示它消费了事件,默认 onTouchEvent 就可能不再处理,进而影响按压状态和点击。OnClickListener 不是独立的底层触摸入口,普通点击通常由 View 的触摸逻辑判断有效点击后调用 performClick 触发。自定义触摸处理中如果自己识别点击,应调用 performClick 以兼顾点击语义和无障碍,而不是直接执行某段点击业务。
延伸追问
点击还可以由键盘、无障碍等途径触发,所以 onClick 不只来自触摸 UP。
内容来源
- Android Framework 知识手册 · 原条目
5-3