From ed1ac3e6d49258437e3a8a808dde4e25b0b5f199 Mon Sep 17 00:00:00 2001 From: Alexander Marchuk Date: Wed, 27 Jan 2016 13:53:14 +0300 Subject: [PATCH] [android] fix: Corrected interaction between menu, placepage and fading view. --- .../src/com/mapswithme/maps/MwmActivity.java | 37 +++++++++++++++---- .../com/mapswithme/maps/widget/FadeView.java | 8 ++-- .../mapswithme/maps/widget/menu/MainMenu.java | 7 +++- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/android/src/com/mapswithme/maps/MwmActivity.java b/android/src/com/mapswithme/maps/MwmActivity.java index c987599e99..d006b505a3 100644 --- a/android/src/com/mapswithme/maps/MwmActivity.java +++ b/android/src/com/mapswithme/maps/MwmActivity.java @@ -24,6 +24,9 @@ import android.widget.ImageButton; import android.widget.LinearLayout; import android.widget.Toast; +import java.io.Serializable; +import java.util.Stack; + import com.mapswithme.country.ActiveCountryTree; import com.mapswithme.country.DownloadActivity; import com.mapswithme.country.DownloadFragment; @@ -69,15 +72,12 @@ import com.mapswithme.util.ThemeUtils; import com.mapswithme.util.UiUtils; import com.mapswithme.util.Utils; import com.mapswithme.util.Yota; +import com.mapswithme.util.concurrency.UiThread; import com.mapswithme.util.sharing.ShareOption; import com.mapswithme.util.sharing.SharingHelper; import com.mapswithme.util.statistics.AlohaHelper; import com.mapswithme.util.statistics.MytargetHelper; import com.mapswithme.util.statistics.Statistics; - -import java.io.Serializable; -import java.util.Stack; - import ru.mail.android.mytarget.nativeads.NativeAppwallAd; import ru.mail.android.mytarget.nativeads.banners.NativeAppwallBanner; @@ -129,6 +129,7 @@ public class MwmActivity extends BaseMwmFragmentActivity private boolean mIsFragmentContainer; private boolean mIsFullscreen; + private boolean mIsFullscreenAnimating; private LocationPredictor mLocationPredictor; private FloatingSearchToolbarController mSearchController; @@ -382,9 +383,9 @@ public class MwmActivity extends BaseMwmFragmentActivity mFadeView.setListener(new FadeView.Listener() { @Override - public void onTouch() + public boolean onTouch() { - mMainMenu.close(true); + return mMainMenu.close(true); } }); @@ -498,6 +499,9 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public void onItemClick(MainMenu.Item item) { + if (mIsFullscreenAnimating) + return; + switch (item) { case TOGGLE: @@ -1062,6 +1066,10 @@ public class MwmActivity extends BaseMwmFragmentActivity mIsFullscreen = isFullscreen; if (isFullscreen) { + if (mMainMenu.isAnimating()) + return; + + mIsFullscreenAnimating = true; Animations.disappearSliding(mMainMenu.getFrame(), Animations.BOTTOM, new Runnable() { @Override @@ -1070,6 +1078,8 @@ public class MwmActivity extends BaseMwmFragmentActivity final int menuHeight = mMainMenu.getFrame().getHeight(); adjustCompass(0, menuHeight); adjustRuler(0, menuHeight); + + mIsFullscreenAnimating = false; } }); if (showZoomButtons()) @@ -1100,7 +1110,20 @@ public class MwmActivity extends BaseMwmFragmentActivity @Override public void onPreviewVisibilityChanged(boolean isVisible) { - if (!isVisible) + if (isVisible) + { + if (mMainMenu.isAnimating() || mMainMenu.isOpen()) + UiThread.runLater(new Runnable() + { + @Override + public void run() + { + if (mMainMenu.close(true)) + mFadeView.fadeOut(false); + } + }, MainMenu.ANIMATION_DURATION * 2); + } + else { Framework.deactivatePopup(); mPlacePage.setMapObject(null); diff --git a/android/src/com/mapswithme/maps/widget/FadeView.java b/android/src/com/mapswithme/maps/widget/FadeView.java index 0d264ce72c..8ebe290802 100644 --- a/android/src/com/mapswithme/maps/widget/FadeView.java +++ b/android/src/com/mapswithme/maps/widget/FadeView.java @@ -4,7 +4,6 @@ import android.animation.Animator; import android.animation.ObjectAnimator; import android.content.Context; import android.support.annotation.NonNull; -import android.support.v4.view.ViewCompat; import android.util.AttributeSet; import android.view.MotionEvent; import android.widget.FrameLayout; @@ -31,7 +30,7 @@ public class FadeView extends FrameLayout public interface Listener { - void onTouch(); + boolean onTouch(); } private Listener mListener; @@ -68,7 +67,10 @@ public class FadeView extends FrameLayout public void fadeOut(boolean notify) { if (mListener != null && notify) - mListener.onTouch(); + { + if (!mListener.onTouch()) + return; + } ObjectAnimator animation = ObjectAnimator.ofFloat(this, PROPERTY_ALPHA, FADE_ALPHA_VALUE, 0f); animation.addListener(mFadeOutListener); diff --git a/android/src/com/mapswithme/maps/widget/menu/MainMenu.java b/android/src/com/mapswithme/maps/widget/menu/MainMenu.java index 564f837f12..bf45c22e9c 100644 --- a/android/src/com/mapswithme/maps/widget/menu/MainMenu.java +++ b/android/src/com/mapswithme/maps/widget/menu/MainMenu.java @@ -51,7 +51,7 @@ public class MainMenu } } - private static final int ANIMATION_DURATION = MwmApplication.get().getResources().getInteger(R.integer.anim_menu); + public static final int ANIMATION_DURATION = MwmApplication.get().getResources().getInteger(R.integer.anim_menu); private static final String TAG_COLLAPSE = MwmApplication.get().getString(R.string.tag_menu_collapse); private final int mButtonsWidth = UiUtils.dimen(R.dimen.menu_line_button_width); @@ -562,4 +562,9 @@ public class MainMenu { return mRouteStartButton; } + + public boolean isAnimating() + { + return mAnimating; + } }