onTouchEvent onKeyDown事件的处理

public boolean onTouchEvent(MotionEvent event) {
		switch (event.getAction()) {
		case MotionEvent.ACTION_UP:
			return true;
		case MotionEvent.ACTION_POINTER_UP:
			return true;
		case MotionEvent.ACTION_POINTER_DOWN:
			return true;
		case MotionEvent.ACTION_MOVE:
			return true;
		}
		return super.onTouchEvent(event);
	}
public boolean onKeyDowne(int keyCode, KeyEvent event) { switch (keyCode) { case KeyEvent.KEYCODE_DPAD_UP: return true; case KeyEvent.KEYCODE_DPAD_DOWN: return true; case KeyEvent.KEYCODE_DPAD_LEFT: return true; case KeyEvent.KEYCODE_DPAD_RIGHT: return true; } return super.onKeyDown(keyCode, event); }

onTouchEvent API中的解释:Implement this method to handle touch screen motion events.就是用来处理屏幕触摸事件。对于返回值的处理,看到有篇博客中说只要是自己写了就要返回return true;感觉有点不巧当,这样就是告诉系统所有的我都已经自己处理了,但是我们可能只处理了一部分,所以比较好的做法是:对于自己处理的return true;而对于自己没有处理的交给系统处理return super.onTouchEvent(event);

在初始化的时候不要忘记setFocusableInTouchMode(true);触屏模式获取焦点,比较类似setFocusable(true);
setFocusable(true);//此方法是用来响应按键!如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.


onKeyDown API中的解释:Default implementation of KeyEvent.Callback.onKeyDown(): perform press of the view when KEYCODE_DPAD_CENTER or KEYCODE_ENTER is released, if the view is enabled and clickable.也就是用来响应物理按键的。
在surfaceview中我们的onKeyDown 虽然是重写了view的函数,但是仍然需要在初始化的时候去声明获取焦点,setFocusable(true); 如果不调用此方法,那么会造成按键无效。原因是因为如果是自己定义一个继承自View的类,重新实现onKeyDown方法后,只有当该View获得焦点时才会调用onKeyDown方法,Actvity中的onKeyDown方法是当所有控件均没有处理该按键事件时,才会调用.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值