프로그래밍(~2017)/안드로이드

[android 안드로이드] Double click/tap detection on android's MapView 맵뷰 더블클릭/더블탭

단세포소년 2012. 1. 4. 21:41
반응형

 

Double click/tap detection on android's MapView

If there is a cleaner way to do it, please share :)

1. Override the default MapView with your own implementation;
2. Override the onInterceptTouchEvent method;
3. Check if the last event was also a click and happened close by (say in the last 250ms);
3.1. If so, it’s a double tap; do whatever you want (in this case I zoom in on the last clicked point);
3.2. If not, ignore :)

Here’s the code (Sorry for the formatting mess, but... :)):

import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;

import com.google.android.maps.MapView;

public class MyMapView extends MapView {

private long lastTouchTime = -1;

public MyMapView(Context context, AttributeSet attrs) {

super(context, attrs);
}


@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {

if (ev.getAction() == MotionEvent.ACTION_DOWN) {

long thisTime = System.currentTimeMillis();
if (thisTime - lastTouchTime < 250) {

// Double tap
this.getController().zoomInFixing((int) ev.getX(), (int) ev.getY());
lastTouchTime = -1;

} else {

// Too slow :)
lastTouchTime = thisTime;
}
}
반응형