From 58d841194e9ecd161ce07525218aeccf1184bad6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B0=D0=BD=D0=B4=D1=80=20?= =?UTF-8?q?=D0=97=D0=B0=D1=86=D0=B5=D0=BF=D0=B8=D0=BD?= Date: Thu, 28 Feb 2019 12:10:03 +0300 Subject: [PATCH] [android] Implemented single tap for place page --- .../BottomSheetPlacePageController.java | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java b/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java index 48f073f4a5..4dcfd08296 100644 --- a/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java +++ b/android/src/com/mapswithme/maps/widget/placepage/BottomSheetPlacePageController.java @@ -2,6 +2,7 @@ package com.mapswithme.maps.widget.placepage; import android.animation.Animator; import android.animation.ObjectAnimator; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.res.Resources; import android.graphics.Rect; @@ -10,8 +11,11 @@ import android.location.Location; import android.os.Bundle; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; +import android.support.v4.view.GestureDetectorCompat; import android.support.v7.widget.Toolbar; import android.util.Log; +import android.view.GestureDetector; +import android.view.MotionEvent; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; @@ -81,6 +85,8 @@ public class BottomSheetPlacePageController implements PlacePageController, Loca @NonNull private final SlideListener mSlideListener; @NonNull + private final GestureDetectorCompat mGestureDetector; + @NonNull private final AnchorBottomSheetBehavior.BottomSheetCallback mSheetCallback = new AnchorBottomSheetBehavior.BottomSheetCallback() @@ -208,8 +214,10 @@ public class BottomSheetPlacePageController implements PlacePageController, Loca mActivity = activity; mPurchaseControllerProvider = provider; mSlideListener = listener; + mGestureDetector = new GestureDetectorCompat(activity, new PlacePageGestureListener()); } + @SuppressLint("ClickableViewAccessibility") @Override public void initialize() { @@ -223,6 +231,7 @@ public class BottomSheetPlacePageController implements PlacePageController, Loca mPlacePage = mActivity.findViewById(R.id.placepage); mPlacePageBehavior = AnchorBottomSheetBehavior.from(mPlacePage); mPlacePageBehavior.addBottomSheetCallback(mSheetCallback); + mPlacePage.setOnTouchListener((v, event) -> mGestureDetector.onTouchEvent(event)); mPlacePage.addOnLayoutChangeListener(this); mPlacePage.addClosable(this); @@ -624,4 +633,28 @@ public class BottomSheetPlacePageController implements PlacePageController, Loca { close(); } + + private class PlacePageGestureListener extends GestureDetector.SimpleOnGestureListener + { + @Override + public boolean onSingleTapConfirmed(MotionEvent e) + { + @AnchorBottomSheetBehavior.State + int state = mPlacePageBehavior.getState(); + if (isCollapsedState(state)) + { + mPlacePageBehavior.setState(AnchorBottomSheetBehavior.STATE_ANCHORED); + return true; + } + + if (isAnchoredState(state) || isExpandedState(state)) + { + mPlacePage.resetScroll(); + mPlacePageBehavior.setState(AnchorBottomSheetBehavior.STATE_COLLAPSED); + return true; + } + + return false; + } + } }