5

我正在将大量使用 Pan Gesture Recognizer 的 IOS 应用程序复制到 Android,但我找不到类似的手势识别器。有这种事吗?

感谢任何方向谢谢

4

2 回答 2

5

我想你要找的是GestureDetector. 我对 iOS 的 Pan Gesture Recognizer 不是很熟悉,但我认为它在 Android 中的工作方式并不完全相同。有关如何使用该类的信息,请参阅开发人员指南主题使用触摸手势。

于 2013-07-03T16:07:09.790 回答
5

Android 开箱即用,有两个识别手势的类。一个是 GestureDetector,另一个是 ScaleGestureDetector。

与 ios 不同,基本的手势检测器框架是有限的——你不能像在 ios 的 UiGestureRecognizer 类中那样指定依赖关系、解决冲突或通过指定触摸点等来配置它们。

要回答您的问题,可以使用 GestureDetector 检测平移。这是一个片段:

PanGestureListener listener = new PanGestureListener();
GestureDetector detector = new GestureDetector(context, listener);

class PanGestureListener extends GestureDetector.SimpleOnGestureListener {

    @Override
    public boolean onScroll(MotionEvent e1, 
                            MotionEvent e2, 
                            float distanceX, 
                            float distanceY) {

        //YOUR "pan handler"
        return true;
    }

}

现在在您的 onTouch 方法中,只需将所有调用转发到检测器.onTouch,如下所示:

    @Override
    public boolean onTouchEvent(MotionEvent event) {
        detector.onTouchEvent(event);
        return true;
    }
于 2013-07-30T17:34:11.013 回答