1

我在 webview 中加载图像并希望通过手势在它们之间切换,但在 webview 情况下实现手势检测器所有事件都由检测器 = webview 功能作为缩放和 mt 不起作用。有什么解决办法吗?过滤事件并将它们传递给ontouch?示例代码非常感谢。

谢谢大家。

4

1 回答 1

4

关键是检查gestureDetector.onTouchEvent 的返回值,如果gestureDetector 没有处理该事件,则将其传递给WebView 超类。此外,即使您对 onDown 方法执行了某些操作,请务必从您的 onDown 方法返回“false”,以便超类可以初始化其内部状态。如果您的 onFling 方法处理事件,则返回“true”,否则返回“false”,以便可以应用默认方法。

public class FlingView extends WebView implements OnGestureListener {

    private GestureDetector gestureDetector;

    public FlingView(Context context) {
        super(context);
        init();
    }

    public void init() {
        gestureDetector = new GestureDetector(this.getContext(), this);
    }

    @Override
    public boolean onTouchEvent(MotionEvent e) {
        return (
        gestureDetector.onTouchEvent(e) || super.onTouchEvent(e));
    }

    /* OnGestureListener events */

    public boolean onDown(MotionEvent e1) {
        // Initialize event here
        ...

        // give the superclass a chance at tap events
        return false;
    }

    public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
    float velocityY) {
        if (test) {
            // handle fling
            ...
            return true;
        } else {
            // let superclass handle the event
            return false;
        }
    }
}
于 2011-02-25T19:07:29.760 回答