android 事件分发中 为什么down事件不消费 后续事件也得不到消费
展开全部
事件都是从dispatchTouchEvent开始的, 如果down事件不消费, 那么在dispatchTouchEvent源码中的mFirstTouchTarget就是空的. mFirstTouchTarget这个变量是记录消费down事件的. 没有消费down 那么mFirstTouchTarget就是空. 其他事件进入dispatchTouchEvent后 会先判断mFirstTouchTarget为空, 就判定事件被拦截了. 就不会继续事件分发了. 也不会去执行onTouchEvent方法了.
至于Android这样设计的道理? 因为如果down事件不接受, 就默认其他事件也不要了. 这也是为了提高性能, 毕竟move是一大串的. 如果不在down中这样设计. 每个move都去判断, 势必会影响触摸响应性能.
至于Android这样设计的道理? 因为如果down事件不接受, 就默认其他事件也不要了. 这也是为了提高性能, 毕竟move是一大串的. 如果不在down中这样设计. 每个move都去判断, 势必会影响触摸响应性能.
展开全部
KeyDown:当键盘上某键被按下去时发生。KeyPree:此事件发生在键盘被按下后和字符被显示出来之前发生。对于键盘事件,相对来说KeyDown事件和KeyUp事件使用比较少,通常情况下对KeyPress事件编程较多,因为此事件注重键盘被按下的是哪个键如果帮助到您,请记得采纳为满意答案哈,谢谢!祝您生活愉快! vae.la
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d("TAG", "onClick execute");
}
});
这样在onClick方法里面写实现,就可以在按钮被点击的时候执行。你可能也已经知道,如果想给这个按钮再添加一个touch事件,只需要调用:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TAG", "onTouch execute, action " + event.getAction());
@Override
public void onClick(View v) {
Log.d("TAG", "onClick execute");
}
});
这样在onClick方法里面写实现,就可以在按钮被点击的时候执行。你可能也已经知道,如果想给这个按钮再添加一个touch事件,只需要调用:
button.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
Log.d("TAG", "onTouch execute, action " + event.getAction());
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询