私は、ユーザーがマップの画像をアップロードできるカスタムUIコンポーネントを作成しています。そして、ユーザーは特定の場所を指定し、ピンを表示できます。最初に地図を読み込んだユーザーの画像は、任意の位置にパンおよびズームすることができます。このために、私は魅力のように動作する以下の例を使用しました。 TouchImageView任意のビューの長押し位置の検出方法は?
次の部分は、画像を長く押したときにピンを追加することでした。このために私は、マップイメージ上に絶対レイアウトを使用し、ImageViewのタッチリスナーが機能するように、最後にOnTouchListenerとReturned falseを追加しました。私は
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;
}
});
以下のようOnTouchListenerを実装しかし、ここで問題は、ケース付きです:「MotionEvent.ACTION_MOVE」それは常に長押しがリリースします。しかし、ユーザーが画像をパンまたはズームしようとすると、ピンが追加されます。
タッチで動きがあるかどうかを検出し、ユーザーが地図をズームまたはパンしているときに無視するにはどうすればよいですか?
ありがとうございます。