-1
這是我爲我的onTouchListener使得代碼:我需要讓我的應用程序支持雙指縮放,但不能雙擊
if(event.getAction() == MotionEvent.ACTION_UP) {
Log.i("", "double touch : " + timeLastTouch + "... time passed: " + (System.currentTimeMillis() - timeLastTouch));
if (System.currentTimeMillis() - timeLastTouch < 500) {
Log.i("", "double touch TRUE");
timeLastTouch = System.currentTimeMillis();
return true;
} else {
Log.i("", "double touch FALSE");
timeLastTouch = System.currentTimeMillis();
return false;
}
}else if(event.getAction() == MotionEvent.ACTION_DOWN) {
Log.i("", "double touch DOWN : " + timeLastTouch + "... time passed: " + (System.currentTimeMillis() - timeLastTouch));
if (System.currentTimeMillis() - timeLastTouch < 500) {
Log.i("", "double touch TRUE DOWN");
timeLastTouch = System.currentTimeMillis();
return true;
}else {
Log.i("", "double touch FALSE DOWN");
return false;
}
}else {
timeLastTouch = System.currentTimeMillis();
Log.i("","double touch ELSE FALSE");
return false;
}
但它不工作。 此視圖位於Surface視圖上方。現在我只需要將事件發送到SurfaceView進行捏合(捏到放大) 現在我試着製作邏輯,這樣如果它有雙重觸摸,那麼我將返回true(它消耗了觸摸,所以然後表面查看,沒有得到觸摸)。 但是,如果我這樣做,捏縮放無法使用。 如果我刪除這個邏輯,捏縮放,工作,所以我添加了一些日誌,並跟着他們。我注意到,對於縮放縮放,你會得到2個向下的事件,並且只有在調用ACTION_MOVE之後。據推測,因爲當你捏縮放,你放下2個手指,然後縮放。我的問題是,我的代碼設置它,爲第二個Action_down消耗觸摸,這意味着捏開始縮放不開始。任何ideeas如何解決這個問題?
你可能想看看[現有的捏實施](https://android-arsenal.com/search?q=pinch),看看他們是如何做到的。 – CommonsWare
那麼,我不需要執行捏合邏輯。已經存在。在低於我的觀點的觀點上。我想要的就是讓我的觀點消耗雙擊的觸感,但不是捏。 (記錄event.action)返回:0 0 1(action_down,action_down,action_up)用於雙擊,並返回0 0 2/1(action_down,action_down,move或up)用於捏。因此我的問題。原因如果我阻止第二個Action_down事件,我將無法獲得縮放。如果我不阻止它,它將被髮送到下一個視圖,並且不會發生 –
因此,我需要一個邏輯來知道在「移動」的MotionEvent被調用之前何時發生捏縮放。我嘗試使用event.getIndexCounter()或檢查它是否是多點觸摸,但它只爲我返回1 –