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:
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;
}
}
return super.onInterceptTouchEvent(ev);
}
}
Posted via email from nocivus’ ramblings
Related:
- Double click/tap detection on android’s MapView If there is a cleaner way to do it, please...
- Android location provider mock So, yeah, I resumed playing around with android, this time...
Categorised as: android, software development