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()为什么对这里的处理是相反的?
...全文
106 点赞 收藏 2
写回复
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时,表示并没有完全处理完该事件,更希望其他回调方法继续对其进行处理。
回复 点赞
发动态
发帖子
Android
创建于2009-10-09

4.6w+

社区成员

9.0w+

社区内容

移动平台 Android
社区公告
暂无公告