public class TreeLayout extends ViewGroup {
Tree tree;
int mDy = 60;
int mDx = 100;
private ScaleGestureDetector mScaleGestureDetector = new ScaleGestureDetector(getContext(), new ScaleGestureDetector.SimpleOnScaleGestureListener() {
@Override
public boolean onScale(ScaleGestureDetector detector) {
double scaleFactor = detector.getScaleFactor();
float old = TreeLayout.this.getScaleX();
if (Math.abs(scaleFactor - old) > 0.6 || Math.abs(scaleFactor - old) < 0.02) {
//忽略
} else {
TreeLayout.this.setScaleX(detector.getScaleFactor());
TreeLayout.this.setScaleY(detector.getScaleFactor());
}
return false;
}
@Override
public boolean onScaleBegin(ScaleGestureDetector detector) {
return true;
}
});
private int lastX = 0;
private int lastY = 0;
private int mode = 0;
@Override
public boolean onTouchEvent(MotionEvent event) {
int currentX = (int) event.getRawX();//获得手指当前的坐标,相对于屏幕
int currentY = (int) event.getRawY();
switch (event.getAction() & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
mode = 1;
break;
case MotionEvent.ACTION_UP:
mode = 0;
break;
case MotionEvent.ACTION_POINTER_UP:
//将模式进行为负数这样,多指下,抬起不会触发移动
mode = -2;
break;
case MotionEvent.ACTION_POINTER_DOWN:
mode += 1;
break;
case MotionEvent.ACTION_MOVE:
if (mode >= 2) {
//缩放
//mScaleGestureDetector.onTouchEvent(event);