多分、あなたが望むものを達成するためにいくつかのテクニックを組み合わせなければならないでしょう。
パンニングをキャッチするには、MapViews onTouchEvent()またはdispatchTouchEvent()をオーバーライドして、MotionEvent.ACTION_UPイベントを待機します。ユーザが画面から指を持ち上げたときにこれがトリガーされます。
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction()==MotionEvent.ACTION_UP) {
// Call your procedure here
}
return super.onTouchEvent(ev);
}
あなたはパンの間にあなたのプロシージャを呼び出すしたい場合は、私はあなたが2つの同じ方法のいずれかをオーバーライドパンの動きを見ていると思います。
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_MOVE) {
if (event.getHistorySize() < 1)
return; // First call, no history
// Get difference in position since previous move event
float diffX = event.getX() - event.getHistoricalX(event.getHistorySize() - 1);
float diffY = event.getY() - event.getHistoricalY(event.getHistorySize() - 1);
if (Math.abs(diffX) > 0.5f || Math.abs(diffY) > 0.5f) {
/* Position has changed substantially, so this is probably a drag action.
Call your procedure here. */
}
}
}
あなたがdispatchDrawを上書きすることができ、ズームレベルの変化を検出する:これは組み込みのイベントでなければなりませんように
int oldZoomLevel=-1;
public void dispatchDraw(Canvas canvas) {
super.dispatchDraw(canvas);
if (getZoomLevel() != oldZoomLevel) {
// Call your procedure here
oldZoomLevel = getZoomLevel();
}
}
がようだが、私はいくつかの取扱いと一緒に住んでますね。このような何かそれらの.. ..ありがとう! – Mzzzzzz