关于触摸事件
覆写 onTouchEvent(MotionEvent event) 方法:
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
break;
case MotionEvent.ACTION_UP:
break;
}
//以下三种效果都是一样的
System.out.println(event.getAction()); /*老写法*/
System.out.println(event.getActionMasked());/*API 8 以后,Google推荐*/
System.out.println(MotionEventCompat.getActionMasked(event)); /*兼容写法*/
//获取屏幕上的手指数
System.out.println(MotionEventCompat.getPointerCount(event));
//触点坐标
int actionIndex = MotionEventCompat.getActionIndex(event);
//多点触摸
if (MotionEventCompat.getPointerCount(event) > 1) {
float touchX_1 = MotionEventCompat.getX(event, 0);
float touchY_1 = MotionEventCompat.getY(event, 0);
float touchX_2 = MotionEventCompat.getX(event, 1);
float touchY_2 = MotionEventCompat.getY(event, 1);
System.out.println(String.format("touchX_1:%f,touchY_1:%f,touchX_2:%f,touchY_2:%f\n", touchX_1, touchY_1, touchX_2, touchY_2));
} else {
//单点触摸
float touchX = MotionEventCompat.getX(event, actionIndex);
float touchY = MotionEventCompat.getY(event, actionIndex);
System.out.println(touchX + "\t" + touchY);
}
return super.onTouchEvent(event);
}