在 Android 中,可以使用 GestureDetector 类来实现手势识别,包括两指放大手势。以下是一个示例代码,演示了如何使用 GestureDetector 来实现两指放大手势的检测:

import android.os.Bundle;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.ScaleGestureDetector;
import android.view.View;
import android.widget.ImageView;

import androidx.appcompat.app.AppCompatActivity;

public class MainActivity extends AppCompatActivity {
    private ImageView imageView;
    private ScaleGestureDetector scaleGestureDetector;
    private GestureDetector gestureDetector;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView = findViewById(R.id.imageView);
        scaleGestureDetector = new ScaleGestureDetector(this, new ScaleGestureListener());
        gestureDetector = new GestureDetector(this, new GestureListener());

        imageView.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                scaleGestureDetector.onTouchEvent(event);
                gestureDetector.onTouchEvent(event);
                return true;
            }
        });
    }

    private class ScaleGestureListener extends ScaleGestureDetector.SimpleOnScaleGestureListener {
        @Override
        public boolean onScale(ScaleGestureDetector detector) {
            float scaleFactor = detector.getScaleFactor();
            imageView.setScaleX(imageView.getScaleX() * scaleFactor);
            imageView.setScaleY(imageView.getScaleY() * scaleFactor);
            return true;
        }
    }

    private class GestureListener extends GestureDetector.SimpleOnGestureListener {
        @Override
        public boolean onDoubleTap(MotionEvent e) {
            imageView.setScaleX(1.0f);
            imageView.setScaleY(1.0f);
            return true;
        }
    }
}

在上面的示例中,ImageView 被设置为可触摸,并通过 setOnTouchListener 监听触摸事件。在 onTouch 方法中,我们将触摸事件交给了 scaleGestureDetectorgestureDetector 来处理。

ScaleGestureDetector 用于检测两指放大手势,ScaleGestureListener 继承自 ScaleGestureDetector.SimpleOnScaleGestureListener,重写了 onScale 方法,在该方法中,可以根据手势的缩放因子来进行缩放操作。

GestureDetector 用于检测其他手势,GestureListener 继承自 GestureDetector.SimpleOnGestureListener,重写了 onDoubleTap 方法,该方法在双击时被调用,我们在这里将 ImageView 的缩放比例重置为 1.0。

在布局文件中,需要添加一个 ImageView 来显示图像,可以根据需要设置其宽高、图片资源等属性。

希望以上代码可以帮助你实现 Android 中的两指放大手势。


原文地址: https://www.cveoy.top/t/topic/pF9d 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录