Android API 提供了ScaleGestureDetector类用于处理缩放手势,它主要由两部分组成:
一、ScaleGestureDetector主类,主要用于设置监测的对象和监听器,还有获取手势的各种功能相关信息,比如手指触点的坐标、触点间的距离等等。
二、主类的内部接口ScaleGestureDetector.OnScaleGestureListener,用于处理手势,让你可以自己编写程序规定手势要执行什么样的功能。
关系图大致如下:
程序示例:
public class MainActivity extends AppCompatActivity implements ScaleGestureDetector.OnScaleGestureListener {
//首先要声明手势监测器的对象
ScaleGestureDetector scaleGestureDetector;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//设置检测的对象和监听器,在这里都是这个类本身所以都用this,以此创建对象并赋值。
scaleGestureDetector = new ScaleGestureDetector(this, this);
}
//实现手势监听器接口则必须实现以下三个方法:
@Override
public boolean onScaleBegin(ScaleGestureDetector detector){
//在这里判断手势是否要被处理,要的手势返回真值,否则返回假值;
return true;
}
@Override
public boolean onScale(ScaleGestureDetector detector) {
//如果上面那个方法返回了真值,则手势就会交给这个方法处理。在这里写处理规则。
}
@Override
public void onScaleEnd(ScaleGestureDetector detector) {
//检测到手势的结束,比如手指抬起时会调用这个方法。如果你在手势结束是有什么要处理的可以写在这里。
}
}
这样你的程序就可以对缩放手势进行处理了。
官方API文档:https://developer.android.google.cn/reference/android/view/ScaleGestureDetector
https://developer.android.google.cn/reference/android/view/ScaleGestureDetector.OnScaleGestureListener