1
我正在創建一個自定義UI組件,用戶可以在其中上傳地圖的圖像,然後用戶可以指定某些位置並顯示一個圖釘。首先映像加載用戶將能夠平移和縮放到任何位置。爲此,我使用了下面的例子,它像一個魅力。 TouchImageView如何檢測任何視圖的長按位置?
下一部分是在圖像上長時間按下時添加一個pin。爲此,我在地圖圖像上使用了絕對佈局,並在最後添加了OnTouchListener和Returned false以使ImageView上的觸摸偵聽器也能正常工作。我實現了OnTouchListener如下
absoluteLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, final MotionEvent event) {
switch (event.getAction()){
case MotionEvent.ACTION_DOWN:
count=-1;// reset count. Thredd will start as 0
released = false;// Touch long press is started
final Handler handler = new Handler();
new Thread(new Runnable() {
@Override
public void run() {
while(!released){//Stop count if touch released
try {
count++;// Count every 200 ms
Thread.sleep(200);
if(count>10){ //if pressed for 200*10= 2 seconds
released=true;
handler.post(new Runnable() {
@Override
public void run() {
addPin((int) event.getX(), (int) event.getY());//Calling the method to add the pin
}
});
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}).start();
break;
case MotionEvent.ACTION_UP:
released=true;// touch is released
break;
case MotionEvent.ACTION_MOVE:
released=true; // touch is a movement therefore release long press
break;
}
return false;
}
});
但這裏的問題是,隨着情況:「MotionEvent.ACTION_MOVE」它總是讓長按釋放。但沒有它,如果用戶試圖平移或縮放imageView,它會添加一個pin。
如何檢測觸摸中是否存在移動並忽略用戶縮放或平移地圖?
在此先感謝。