在大家设置完事件处理之后,自己去测试时候发现点击没有任何效果。
是你没有设置当前要操作的VIew没有获得焦点,所以要在你的构造函数中加入
setFocusable(true);
如果你这是处理的是触屏事件,你又会发现你自己实现的这个View只支持DOWN按下事件,不知道拖动和UP事件,
需要在VIew的构造函数中加入支持MOVE和UP事件
setClickable(true);
也可以在onTouchEvent中返回 return true;
默认要实现的
@Override
public boolean onTouchEvent(MotionEvent event) {
Log.i("触屏事件", "事件:"+event.getAction());
return super.onTouchEvent(event);
}
解决办法一
public class GameSurfaceView extends SurfaceView implements Runnable ,SurfaceHolder.Callback{
public GameSurfaceView(Context context) {
super(context);
setFocusable(true);
//设置可以处理按下以后的事件
setClickable(true);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return super.onTouchEvent(event);
}
}
解决办法二
public class GameSurfaceView extends SurfaceView implements Runnable ,SurfaceHolder.Callback{
public GameSurfaceView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
return true;
}
}