Я пытаюсь зафиксировать событие двойного нажатия с помощью детектора жестов.
У меня есть оверлейный фрейм, который помещается поверх моего фрагмента карты и реализует слушатели онтач и жестов. Проблема в том, что я могу получить только один слой для захвата событий. Если я изменю onDown на возврат true, оверлей использует все события, и карту нельзя будет использовать. Если он возвращает false, карта вместо этого также использует событие двойного нажатия и увеличивает масштаб, когда я не хочу этого делать.
Вот соответствующий код для наложения:
@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;
}
И вот как устроен мой макет:
<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">
if (mDetector.onTouchEvent(event)) { return true; } return super.onTouchEvent(event);
- person Blackbelt   schedule 03.11.2015onDoubleTapEvent
вернуть истину - person Blackbelt   schedule 03.11.2015