中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

android gesturedetector能識別旋轉手勢嗎

小樊
81
2024-11-22 02:14:51
欄目: 編程語言

是的,Android的GestureDetector可以識別旋轉手勢。你可以通過實現OnGestureListener接口并重寫onFling()方法來檢測旋轉手勢。以下是一個簡單的示例:

import android.content.Context;
import android.view.GestureDetector;
import android.view.MotionEvent;
import android.view.View;
import android.widget.Toast;

public class RotationGestureDetector implements GestureDetector.OnGestureListener {

    private GestureDetector gestureDetector;

    public RotationGestureDetector(Context context) {
        gestureDetector = new GestureDetector(context, this);
    }

    @Override
    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
        float angle = getAngle(e1, e2);
        if (Math.abs(angle) > 10) { // 設置一個閾值,可以根據需要調整
            Toast.makeText(gestureDetector.getContext(), "旋轉角度: " + angle, Toast.LENGTH_SHORT).show();
            return true;
        }
        return false;
    }

    private float getAngle(MotionEvent e1, MotionEvent e2) {
        float centerX1 = (e1.getX() + e1.getX() / 2);
        float centerY1 = (e1.getY() + e1.getY() / 2);
        float centerX2 = (e2.getX() + e2.getX() / 2);
        float centerY2 = (e2.getY() + e2.getY() / 2);

        float distanceX = centerX2 - centerX1;
        float distanceY = centerY2 - centerY1;

        return (float) Math.toDegrees(Math.atan2(distanceY, distanceX));
    }

    @Override
    public void onShowPress(MotionEvent e) {
    }

    @Override
    public boolean onSingleTapConfirmed(MotionEvent e) {
        return false;
    }

    @Override
    public boolean onDoubleTap(MotionEvent e) {
        return false;
    }

    @Override
    public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
        return false;
    }

    @Override
    public void onLongPress(MotionEvent e) {
    }

    public void setOnGestureListener(View view) {
        view.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                return gestureDetector.onTouchEvent(event);
            }
        });
    }
}

在你的Activity中,你可以這樣使用這個類:

RotationGestureDetector rotationGestureDetector = new RotationGestureDetector(this);
rotationGestureDetector.setOnGestureListener(findViewById(R.id.your_view));

這樣,當用戶在指定視圖上執行旋轉手勢時,應用程序會檢測到旋轉角度并顯示一個Toast消息。

0
乌拉特前旗| 青田县| 泗洪县| 石渠县| 静宁县| 阿合奇县| 贡嘎县| 弥渡县| 钟祥市| 白水县| 泽州县| 吴堡县| 余江县| 神木县| 翼城县| 郧西县| 台南县| 凌源市| 广州市| 曲水县| 清涧县| 长白| 桓仁| 抚宁县| 乐亭县| 太原市| 清苑县| 苗栗市| 丘北县| 青川县| 佛冈县| 郴州市| 莱阳市| 吴桥县| 雅安市| 石泉县| 昌都县| 汶上县| 醴陵市| 阿拉善盟| 贵溪市|