Android onScale onTouchEvent

时间:2017-09-26 08:21:50

标签: android zoom ontouchevent

在我的应用中,用户可以通过在屏幕上移动手指来执行某些操作,并在屏幕上放大时执行其他操作。 我的应用程序听取比例事件和触摸事件。

我的问题是当用户放大时,两个手指从不同时触摸屏幕,因此触摸屏幕的第一个手指在触摸事件上而不是按比例调用(当第二个手指调用onScale但功能错误时之前被称为。)

当用户放开手指时,我在缩放后遇到同样的问题。

有人知道该怎么办? 谢谢

1 个答案:

答案 0 :(得分:0)

在这种情况下,触摸事件的级别太低,因为您已经经历过。使用为您处理它的ScaleGestureDetector。从official doc中获取的一个简单示例可能类似于

public MyCustomView(Context mContext){
    ...
    // View code goes here
    ...
    scaleDetector = new ScaleGestureDetector(context, new ScaleListener());
}

@Override
public boolean onTouchEvent(MotionEvent ev) {
    // Let the ScaleGestureDetector inspect all events.
    if(!scaleDetector.onTouchEvent(ev)) {
       // detect the move event here
    }
    return true;
}

相同的探测器模式应该用于其他更复杂的事件,如拖动。