【问题标题】:On two fingers down how to disable Action Move两根手指向下如何禁用动作移动
【发布时间】:2018-06-06 14:58:22
【问题描述】:

我有如下代码:

switch (ev.getAction() & MotionEvent.ACTION_MASK) {
        case MotionEvent.ACTION_DOWN:
            pinching = false;
            break;

        case MotionEvent.ACTION_MOVE:
            if (pinching || ld > 30.0f) {
                pinching = true;
                final float dxk = 0.5f * (lastdx1 + lastdx2);
                final float dyk = 0.5f * (lastdy1 + lastdy2);

                if(zoom * d / (d - dd) >= 4.0){
                    pinching = false;
                    scrolling = false;
                } else {
                    smoothZoomTo(Math.max(1.0f, zoom * d / (d - dd)), dxk, dyk, true);
                }
            }
            break;

        case MotionEvent.ACTION_POINTER_DOWN:
            ev.setAction(MotionEvent.ACTION_CANCEL);
            super.dispatchTouchEvent(ev);
            break;

        case MotionEvent.ACTION_POINTER_UP:
        case MotionEvent.ACTION_UP:
        default:
            pinching = false;
            break;
    }

在这里,我试图在缩放后放下两根手指。我的要求是在达到 maxzoom 时不要移动。但是现在每次动作移动都会在动作指针向下事件上被调用。

如何在这种情况下跳过动作移动?非常感谢任何帮助。

【问题讨论】:

    标签: android multi-touch


    【解决方案1】:

    如果您只想为单点触摸执行 ACTION_MOVE, 然后使用

    ev.getPointerCount();
    

    这给出了指针的数量。如果此计数大于 1,则不执行移动操作。

    【讨论】:

    • 但如果我不处理 pointerCount = 2 则不会发生捏缩放,这是错误的。我只想在图像放大到最大然后两根手指向下时处理。
    猜你喜欢
    • 1970-01-01
    • 2014-04-22
    • 1970-01-01
    • 2016-04-22
    • 1970-01-01
    • 1970-01-01
    • 2011-02-01
    • 2020-10-27
    • 1970-01-01
    相关资源
    最近更新 更多