I am trying to capture the double tap event using a gesture detector.
I have an overlay frame that is placed on top of my map fragment, and implements ontouch and ongesture listeners. The problem is I can only seem to get one layer to capture the events. If I change onDown to return true the overlay consumes all events and the map is not usable. If I have it return false the map instead also uses the double tap event, and zooms in when I do not want it to do that.
Here is the relevant code for the overlay:
@Override
public boolean onDown(MotionEvent e) {
return false;
}
@Override
public void onShowPress(MotionEvent e) {
}
@Override
public boolean onSingleTapUp(MotionEvent e) {
return false;
}
@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
return false;
}
@Override
public void onLongPress(MotionEvent e) {
}
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY) {
return false;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
return mDetector.onTouchEvent(event);
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
return false;
}
@Override
public boolean onDoubleTap(MotionEvent e) {
if(mEventListener != null){
mEventListener.onSelect();
}
return true;
}
@Override
public boolean onDoubleTapEvent(MotionEvent e) {
return false;
}
public interface OnSelectListener{
void onSelect();
}
public void setEventListener(OnSelectListener mEventListener){
this.mEventListener = mEventListener;
}
And here is how my layout is set up:
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:name="com.google.android.gms.maps.MapFragment"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:layout="@layout/circle_options">
</fragment>
<com.derongan.ambiance.OverlayFrame
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/frame_layout">