亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

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
南涧| 项城市| 台中县| 通化县| 桓台县| 黑山县| 民和| 吉林市| 彩票| 万年县| 泗阳县| 垣曲县| 柳州市| 晋州市| 宁国市| 内江市| 清涧县| 多伦县| 十堰市| 新野县| 嘉祥县| 黔西县| 沾益县| 亚东县| 确山县| 上犹县| 建宁县| 望奎县| 尚义县| 文化| 宜州市| 桂东县| 定南县| 芜湖市| 海盐县| 育儿| 蓝山县| 星座| 崇义县| 资阳市| 定襄县|