要正确使用Android的缩放功能,可以按照以下步骤进行:
ImageView imageView = findViewById(R.id.imageView);
// 启用缩放功能
imageView.setOnTouchListener(new View.OnTouchListener() {
private float scaleFactor = 1f;
private float lastScaleFactor = 1f;
private float startX = 0f;
private float startY = 0f;
@Override
public boolean onTouch(View view, MotionEvent event) {
ImageView imageView = (ImageView) view;
// 获取缩放手势的动作类型
int action = event.getAction();
// 处理缩放手势
switch (action & MotionEvent.ACTION_MASK) {
case MotionEvent.ACTION_DOWN:
// 获取初始触摸点坐标
startX = event.getX();
startY = event.getY();
break;
case MotionEvent.ACTION_MOVE:
if (event.getPointerCount() == 2) {
// 计算缩放比例
float dx = event.getX(0) - event.getX(1);
float dy = event.getY(0) - event.getY(1);
float distance = (float) Math.sqrt(dx * dx + dy * dy);
scaleFactor = distance / lastScaleFactor;
// 设置缩放矩阵
Matrix matrix = new Matrix();
matrix.postScale(scaleFactor, scaleFactor);
imageView.setImageMatrix(matrix);
}
break;
case MotionEvent.ACTION_UP:
// 更新最后一次的缩放比例
lastScaleFactor *= scaleFactor;
break;
}
return true;
}
});
在这个示例中,我们通过计算两个触摸点之间的距离来确定缩放比例,并使用Matrix类来设置缩放矩阵。最后,我们将缩放矩阵应用到ImageView上。
这样,当用户在ImageView上进行缩放手势时,图片将按照缩放比例进行相应的缩放操作。