2017-09-26 81 views
0

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

我的问题是当用户放大时,两根手指不会同时触摸屏幕,因此触摸屏的第一根手指在触摸事件上调用而不是在缩放上(当第二根手指到达时它调用onScale,但是出现错误函数之前已被调用过)。

我有变焦后同样的问题,当用户得到他的手指离开。

有人知道该怎么办? 感谢

回答

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; 
} 

相同的检测器图案应被用于其它更复杂的事件,如拖动。

+0

我使用scalegesturedetector检测变焦,但在我的onTouchEvent功能,我不得不检测运动了。当检测到变焦时,它也检测到移动。这是我的问题。 – Nos

+0

我不得不翻译我的视图,当我移动手指和缩放时,我捏。我的问题是什么时候捏,系统保持最后一个手指的位置作为运动事件 – Nos

+0

@Nos'scaleDetector.onTouchEvent()'返回一个布尔值,指示事件是否被处理。这就是你如何能够突出排除这两个检测。 –