2017-09-26 152 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()'返回一個布爾值,指示事件是否被處理。這就是你如何能夠突出排除這兩個檢測。 –