当我触摸活动中的特定视图时,禁用dispatchTouchEvent

时间:2013-02-26 15:31:02

标签: android gesture

我使用dispatchTouchEvent使用以下代码进行滑动手势

@Override
    public boolean dispatchTouchEvent(MotionEvent ev) {
        // TODO Auto-generated method stub
        boolean result = super.dispatchTouchEvent(ev);
        // disable the gesture in this screen because we have   
        return gDetector.onTouchEvent(ev);
    }

我希望使用SignatureView来捕获客户签名 https://github.com/CoatedMoose/CustomViews/blob/master/library/src/com/coatedmoose/customviews/SignatureView.java 所以我想在用户点击SignatureView时禁用滑动手势,我该怎么做?

1 个答案:

答案 0 :(得分:2)

我不熟悉SignatureView项目,但对于常规GesturDetector,您可以像以下内容一样将事件传递给GestureDetector,只有当它在它的“目标”View

@Override
public boolean dispatchTouchEvent(MotionEvent ev) {

    boolean result = super.dispatchTouchEvent(ev);

    if (inSignatureArea(ev)) {
        return gDetector.onTouchEvent(ev);
    }
    else {
        return result;
    }     
}

public boolean inSignatureArea(MotionEvent ev) {
    float eventX = ev.getX();
    float eventY = ev.getY();
    return (eventX > signatureArea.getX() && eventX < (signatureArea.getX() + signatureArea.getWidth())) ;
    // && (same thing for Y and height); 
}

您应该能够根据自己的需要进行调整。