我的需求是对自定义的View,根据手势进行平移、放缩的功能,类似于常见的地图软件,单手滑动会平移地图,两个手指滑动实现地图的放大和缩小。
这里主要用到了GestureDetector.OnGestureListener中的onScroll实现滑动平移,ScaleGestureDetector.OnScaleGestureListener的onScale实现放缩。
在View里面定义了两个内部类实现两个接口,并且将onTouchEvent事件交给gestureDetector和scaleGestureDetector处理。
gestureDetector = new GestureDetector(context,new GestureListener());
scaleGestureDetector = new ScaleGestureDetector(context, new ScaleGestureListener());
@Override
public boolean onTouchEvent(MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_UP:
isStart = false;
break;
}
gestureDetector.onTouchEvent(event);
scaleGestureDetector.onTouchEvent(event);
return true;
}
private class GestureListener implements GestureDetector.OnGestureListener{
private float preScrollX = 0;