android按键事件到底怎么回事?

new___________ 2014-01-24 12:14:22
Android中的事件类型分为按键事件和屏幕触摸事件,
在屏幕触摸事件中
public boolean onTouch(View arg0, MotionEvent event) {
// TODO Auto-generated method stub
builder.setLength(0);
switch(event.getAction()){
case MotionEvent.ACTION_DOWN:
builder.append("down, ");
break;
case MotionEvent.ACTION_MOVE:
builder.append("move, ");
break;
case MotionEvent.ACTION_CANCEL:
builder.append("cancle, ");
break;
case MotionEvent.ACTION_UP:
builder.append("up, ");
break;
}
builder.append(event.getX());
builder.append(", ");
builder.append(event.getY());
String text=builder.toString();
Log.d("TouchTest", text);
textView.setText(text);
return false;
}
在这里返回值false,最后显示down,如果为true则会把up也显示一次。
true是截获一个事件,事件就不会继续传递,为什么还会显示up
flase响应了down,为什么对up事件没有响应?

在按键事件中
public boolean onKey(View view, int keyCode, KeyEvent event) {
// TODO Auto-generated method stub
builder.setLength(0);
switch (event.getAction()) {
case KeyEvent.ACTION_DOWN:
builder.append("down, ");
break;
case KeyEvent.ACTION_UP:
builder.append("up, ");
break;
}
builder.append(event.getKeyCode());
builder.append(", ");
builder.append((char)event.getUnicodeChar());
String text = builder.toString();
Log.d("KeyTest", text);
textView.setText(text);
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK)
return false;
else
return false;
}

在这里false会显示down和up,然后消息继续传递下去
true也会显示down和up,消息被截获,没有继续传递下去。
OnKey()和OnTouch()为什么对这里的处理是相反的?
...全文
151 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
new___________ 2014-01-24
  • 打赏
  • 举报
回复
引用 1 楼 heaimnmn 的回复:
我也不知道对不对,自己总结的 ontouch: true: 1.告诉Android,MotionEvent对象已被使用,不能再提供给其他方法。 2.还告诉Android,继续将此触摸序列的触摸事件(move,up)发送到此方法。 false:1.告诉Android,onTouch()方法未使用该事件,所以Android寻找要调用的下一个方法。 2.告诉Android。不再将此触摸序列的触摸事件(move,up)发送到此方法。 onkey: 返回值,该方法的返回值为一个boolean类型的变量,当返回true时,表示已经完整地处理了这个事件,并不希望其他的回调方法再次进行处理,而当返回false时,表示并没有完全处理完该事件,更希望其他回调方法继续对其进行处理。
有些问题感到很迷惑 down,和up这是两个事件还是一个事件? 他们是横向同一级的事件还是纵向排列的事件?
哎,真难 2014-01-24
  • 打赏
  • 举报
回复
我也不知道对不对,自己总结的 ontouch: true: 1.告诉Android,MotionEvent对象已被使用,不能再提供给其他方法。 2.还告诉Android,继续将此触摸序列的触摸事件(move,up)发送到此方法。 false:1.告诉Android,onTouch()方法未使用该事件,所以Android寻找要调用的下一个方法。 2.告诉Android。不再将此触摸序列的触摸事件(move,up)发送到此方法。 onkey: 返回值,该方法的返回值为一个boolean类型的变量,当返回true时,表示已经完整地处理了这个事件,并不希望其他的回调方法再次进行处理,而当返回false时,表示并没有完全处理完该事件,更希望其他回调方法继续对其进行处理。

80,471

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧