在上一篇中,我们注意到自定义View中有个onTouchEvent()方法,看名字就知道是干什么的了。通常我们处理触屏事件会用TouchListener和Event Handler完成。前者需要扩展OnTouchListener并实现onTouch方法,后者需要扩展控件并实现onTouchEvent方法
例如:
button.setOnTouchListener(new VIew.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (v instanceof Button) {
//处理button的touch事件
} else {
//处理别的
}
return false;
}
});
而使用Event Handler则需要扩展并覆盖onTouchEvent方法,举个例子:
class CustomView extends View {
public CustomView(Context context) {
super(context);
}
@Override
public boolean onTouchEvent(MotionEvent event) {
int action = event.getAction();
switch (action) {
case MotionEvent.ACTION_DOWN:
//处理action_down事件
break;
case MotionEvent.ACTION_MOVE:
//处理action_move事件
break;
case MotionEvent.ACTION_CANCEL:
//处理action_cancel事件
break;
default:
break;
}
return super.onTouchEvent(event);
}
}