思路是这样的,我们先在屏幕上按住一个手指,那么,当我们按下第二个手指时,会有一个初始距离,然后我们移动第二个手指并松开,在松开瞬间得到两个手指的新距离,比较初始距离和新距离,来确定是放大还是缩小。
首先定义一个量来储存初始距离:
private float oldPath;
然后我们就可以根据MotionEvent的常量来进行相应的操作:
case MotionEvent.ACTION_POINTER_DOWN:
float mx = event.getX(1);//参数1代表是第二个手指
float my = event.getY(1);
oldPath = (float) Math.sqrt((mx - x1) * (mx - x1) + (my - y1) * (my - y1));// 得到初始距离
break;
case MotionEvent.ACTION_POINTER_UP:
x = event.getX(0);// 参数0代表第一个按下的手指
y = event.getY(0);
mx = event.getX(1);//参数1代表第二个按下的手指
my = event.getY(1);
float newPath = (float) Math.sqrt((mx - x1) * (mx - x1) + (my - y1) * (my - y1));// 计算得到新距离
if (oldPath < newPath)// 判断新距离和旧距离
GobangConfig.size = (int) (GobangConfig.size * 1.1);// 放大棋盘
else if (GobangConfig.size > 15)// 棋盘不能过小,否则就无法放大
GobangConfig.size = (int) (GobangConfig.size * 0.9);// 所小棋盘
break;
注意,在这个switch选择以后,一定要加一个:
this.invalidate();// 刷新界面










