forked from organicmaps/organicmaps-tmp
[android] Review fixes
This commit is contained in:
parent
5f7a8a6fa7
commit
ef34765b47
4 changed files with 65 additions and 67 deletions
|
@ -536,7 +536,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
mNavZoomOut.setOnClickListener(this);
|
||||
View myPosition = frame.findViewById(R.id.my_position);
|
||||
mNavMyPosition = new MyPositionButton(myPosition);
|
||||
mNavAnimationController = new NavigationButtonsAnimationController(mNavZoomIn, mNavZoomOut, mNavMyPosition,
|
||||
mNavAnimationController = new NavigationButtonsAnimationController(mNavZoomIn, mNavZoomOut, myPosition,
|
||||
frame.findViewById(R.id.anchor_center));
|
||||
}
|
||||
|
||||
|
@ -1111,7 +1111,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
{
|
||||
Animations.disappearSliding(mNavZoomOut, Animations.RIGHT, null);
|
||||
Animations.disappearSliding(mNavZoomIn, Animations.RIGHT, null);
|
||||
Animations.disappearSliding(mNavMyPosition.getButton(), Animations.RIGHT, null);
|
||||
mNavMyPosition.hide();
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -1138,7 +1138,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
{
|
||||
Animations.appearSliding(mNavZoomOut, Animations.RIGHT, null);
|
||||
Animations.appearSliding(mNavZoomIn, Animations.RIGHT, null);
|
||||
Animations.appearSliding(mNavMyPosition.getButton(), Animations.RIGHT, null);
|
||||
mNavMyPosition.show();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1184,7 +1184,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
public void onProgress(float translationX, float translationY)
|
||||
{
|
||||
if (mNavAnimationController != null)
|
||||
mNavAnimationController.onPlacePageMoved(translationY, mPlacePage.getScrollHeight());
|
||||
mNavAnimationController.onPlacePageMoved(translationY);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -1453,10 +1453,7 @@ public class MwmActivity extends BaseMwmFragmentActivity
|
|||
if (mNavAnimationController == null)
|
||||
return;
|
||||
|
||||
if (visible)
|
||||
setNavButtonsTopLimit(mSearchController.getToolbar().getHeight());
|
||||
else
|
||||
setNavButtonsTopLimit(0);
|
||||
setNavButtonsTopLimit(visible ? mSearchController.getToolbar().getHeight() : 0);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -5,22 +5,21 @@ import android.support.annotation.NonNull;
|
|||
import android.support.annotation.Nullable;
|
||||
import android.view.View;
|
||||
|
||||
import com.mapswithme.maps.widget.menu.MyPositionButton;
|
||||
import com.mapswithme.maps.routing.RoutingController;
|
||||
import com.mapswithme.util.Animations;
|
||||
import com.mapswithme.util.UiUtils;
|
||||
|
||||
class NavigationButtonsAnimationController
|
||||
{
|
||||
@NonNull
|
||||
private final View mNavZoomIn;
|
||||
private final View mZoomIn;
|
||||
@NonNull
|
||||
private final View mNavZoomOut;
|
||||
private final View mZoomOut;
|
||||
@NonNull
|
||||
private final MyPositionButton mNavMyPosition;
|
||||
private final View mMyPosition;
|
||||
@Nullable
|
||||
private final View mCenter;
|
||||
|
||||
private final float mScreenHeight;
|
||||
private final float mMargin;
|
||||
private float mBottom;
|
||||
private float mTop;
|
||||
|
@ -28,15 +27,14 @@ class NavigationButtonsAnimationController
|
|||
private boolean mIsZoomAnimate;
|
||||
private boolean mIsMyPosAnimate;
|
||||
|
||||
NavigationButtonsAnimationController(@NonNull View navZoomIn, @NonNull View navZoomOut,
|
||||
@NonNull MyPositionButton navMyPosition, @Nullable View center)
|
||||
NavigationButtonsAnimationController(@NonNull View zoomIn, @NonNull View zoomOut,
|
||||
@NonNull View myPosition, @Nullable View center)
|
||||
{
|
||||
mNavZoomIn = navZoomIn;
|
||||
mNavZoomOut = navZoomOut;
|
||||
mNavMyPosition = navMyPosition;
|
||||
mZoomIn = zoomIn;
|
||||
mZoomOut = zoomOut;
|
||||
mMyPosition = myPosition;
|
||||
mCenter = center;
|
||||
Resources res = mNavZoomIn.getResources();
|
||||
mScreenHeight = res.getDisplayMetrics().heightPixels;
|
||||
Resources res = mZoomIn.getResources();
|
||||
mMargin = res.getDimension(R.dimen.margin_base_plus);
|
||||
calculateLimitTranslations();
|
||||
}
|
||||
|
@ -44,14 +42,14 @@ class NavigationButtonsAnimationController
|
|||
private void calculateLimitTranslations()
|
||||
{
|
||||
mTop = mMargin;
|
||||
mNavMyPosition.getButton().addOnLayoutChangeListener(new View.OnLayoutChangeListener()
|
||||
mMyPosition.addOnLayoutChangeListener(new View.OnLayoutChangeListener()
|
||||
{
|
||||
@Override
|
||||
public void onLayoutChange(View v, int left, int top, int right, int bottom,
|
||||
int oldLeft, int oldTop, int oldRight, int oldBottom)
|
||||
{
|
||||
mBottom = bottom + mMargin;
|
||||
mNavMyPosition.getButton().removeOnLayoutChangeListener(this);
|
||||
mMyPosition.removeOnLayoutChangeListener(this);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -64,21 +62,21 @@ class NavigationButtonsAnimationController
|
|||
private void fadeOutZoom()
|
||||
{
|
||||
mIsZoomAnimate = true;
|
||||
Animations.fadeOutView(mNavZoomIn, new Runnable()
|
||||
Animations.fadeOutView(mZoomIn, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
mNavZoomIn.setVisibility(View.INVISIBLE);
|
||||
mZoomIn.setVisibility(View.INVISIBLE);
|
||||
mIsZoomAnimate = false;
|
||||
}
|
||||
});
|
||||
Animations.fadeOutView(mNavZoomOut, new Runnable()
|
||||
Animations.fadeOutView(mZoomOut, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
mNavZoomOut.setVisibility(View.INVISIBLE);
|
||||
mZoomOut.setVisibility(View.INVISIBLE);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
@ -86,9 +84,9 @@ class NavigationButtonsAnimationController
|
|||
private void fadeInZoom()
|
||||
{
|
||||
mIsZoomAnimate = true;
|
||||
mNavZoomIn.setVisibility(View.VISIBLE);
|
||||
mNavZoomOut.setVisibility(View.VISIBLE);
|
||||
Animations.fadeInView(mNavZoomIn, new Runnable()
|
||||
mZoomIn.setVisibility(View.VISIBLE);
|
||||
mZoomOut.setVisibility(View.VISIBLE);
|
||||
Animations.fadeInView(mZoomIn, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
|
@ -96,18 +94,18 @@ class NavigationButtonsAnimationController
|
|||
mIsZoomAnimate = false;
|
||||
}
|
||||
});
|
||||
Animations.fadeInView(mNavZoomOut, null);
|
||||
Animations.fadeInView(mZoomOut, null);
|
||||
}
|
||||
|
||||
private void fadeOutMyPosition()
|
||||
{
|
||||
mIsMyPosAnimate = true;
|
||||
Animations.fadeOutView(mNavMyPosition.getButton(), new Runnable()
|
||||
Animations.fadeOutView(mMyPosition, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
UiUtils.invisible(mNavMyPosition.getButton());
|
||||
UiUtils.invisible(mMyPosition);
|
||||
mIsMyPosAnimate = false;
|
||||
}
|
||||
});
|
||||
|
@ -116,8 +114,8 @@ class NavigationButtonsAnimationController
|
|||
private void fadeInMyPosition()
|
||||
{
|
||||
mIsMyPosAnimate = true;
|
||||
mNavMyPosition.getButton().setVisibility(View.VISIBLE);
|
||||
Animations.fadeInView(mNavMyPosition.getButton(), new Runnable()
|
||||
mMyPosition.setVisibility(View.VISIBLE);
|
||||
Animations.fadeInView(mMyPosition, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
|
@ -127,46 +125,41 @@ class NavigationButtonsAnimationController
|
|||
});
|
||||
}
|
||||
|
||||
void onPlacePageMoved(float translationY, int baseTranslationY)
|
||||
void onPlacePageMoved(float translationY)
|
||||
{
|
||||
if (mCenter == null || mBottom == 0)
|
||||
return;
|
||||
|
||||
final float shift = mScreenHeight - baseTranslationY;
|
||||
final float minTranslation = mScreenHeight - mBottom - shift;
|
||||
final float translation = minTranslation - (baseTranslationY - translationY);
|
||||
if (translation <= 0)
|
||||
update(translation);
|
||||
else
|
||||
update(0);
|
||||
final float translation = translationY - mBottom;
|
||||
update(translation <= 0 ? translation : 0);
|
||||
}
|
||||
|
||||
void update()
|
||||
{
|
||||
update(mNavZoomIn.getTranslationY());
|
||||
update(mZoomIn.getTranslationY());
|
||||
}
|
||||
|
||||
private void update(final float translation)
|
||||
{
|
||||
mNavMyPosition.getButton().setTranslationY(translation);
|
||||
mNavZoomOut.setTranslationY(translation);
|
||||
mNavZoomIn.setTranslationY(translation);
|
||||
if (!mIsZoomAnimate && isOverTopLimit(mNavZoomIn))
|
||||
mMyPosition.setTranslationY(translation);
|
||||
mZoomOut.setTranslationY(translation);
|
||||
mZoomIn.setTranslationY(translation);
|
||||
if (!mIsZoomAnimate && isOverTopLimit(mZoomIn))
|
||||
{
|
||||
fadeOutZoom();
|
||||
}
|
||||
else if (!mIsZoomAnimate && isViewResume(mNavZoomIn))
|
||||
else if (!mIsZoomAnimate && satisfyTopLimit(mZoomIn))
|
||||
{
|
||||
fadeInZoom();
|
||||
}
|
||||
|
||||
if (!mNavMyPosition.isHideOnNavigation() && !mIsMyPosAnimate
|
||||
&& isOverTopLimit(mNavMyPosition.getButton()))
|
||||
if (!shouldBeHidden() && !mIsMyPosAnimate
|
||||
&& isOverTopLimit(mMyPosition))
|
||||
{
|
||||
fadeOutMyPosition();
|
||||
}
|
||||
else if (!mNavMyPosition.isHideOnNavigation() && !mIsMyPosAnimate
|
||||
&& isViewResume(mNavMyPosition.getButton()))
|
||||
else if (!shouldBeHidden() && !mIsMyPosAnimate
|
||||
&& satisfyTopLimit(mMyPosition))
|
||||
{
|
||||
fadeInMyPosition();
|
||||
}
|
||||
|
@ -176,8 +169,15 @@ class NavigationButtonsAnimationController
|
|||
{
|
||||
return view.getVisibility() == View.VISIBLE && view.getY() <= mTop;
|
||||
}
|
||||
private boolean isViewResume(@NonNull View view)
|
||||
|
||||
private boolean satisfyTopLimit(@NonNull View view)
|
||||
{
|
||||
return view.getVisibility() == View.INVISIBLE && view.getY() >= mTop;
|
||||
}
|
||||
|
||||
private boolean shouldBeHidden()
|
||||
{
|
||||
return LocationState.getMode() == LocationState.FOLLOW_AND_ROTATE
|
||||
&& (RoutingController.get().isPlanning() || RoutingController.get().isNavigating());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,6 +10,7 @@ import android.widget.ImageView;
|
|||
import com.mapswithme.maps.LocationState;
|
||||
import com.mapswithme.maps.R;
|
||||
import com.mapswithme.maps.routing.RoutingController;
|
||||
import com.mapswithme.util.Animations;
|
||||
import com.mapswithme.util.Graphics;
|
||||
import com.mapswithme.util.ThemeUtils;
|
||||
import com.mapswithme.util.UiUtils;
|
||||
|
@ -79,18 +80,22 @@ public class MyPositionButton
|
|||
if (image instanceof AnimationDrawable)
|
||||
((AnimationDrawable) image).start();
|
||||
|
||||
UiUtils.visibleIf(!isHideOnNavigation(), mButton);
|
||||
UiUtils.visibleIf(!shouldBeHidden(), mButton);
|
||||
}
|
||||
|
||||
@NonNull
|
||||
public View getButton()
|
||||
{
|
||||
return mButton;
|
||||
}
|
||||
|
||||
public boolean isHideOnNavigation()
|
||||
private boolean shouldBeHidden()
|
||||
{
|
||||
return mMode == LocationState.FOLLOW_AND_ROTATE
|
||||
&& (RoutingController.get().isPlanning() || RoutingController.get().isNavigating());
|
||||
}
|
||||
|
||||
public void show()
|
||||
{
|
||||
Animations.appearSliding(mButton, Animations.RIGHT, null);
|
||||
}
|
||||
|
||||
public void hide()
|
||||
{
|
||||
Animations.disappearSliding(mButton, Animations.RIGHT, null);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,6 +11,7 @@ import android.net.Uri;
|
|||
import android.os.Build;
|
||||
import android.support.annotation.ColorInt;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
import android.support.v4.app.Fragment;
|
||||
import android.support.v4.content.ContextCompat;
|
||||
import android.support.v7.widget.LinearLayoutManager;
|
||||
|
@ -217,11 +218,6 @@ public class PlacePageView extends RelativeLayout
|
|||
}
|
||||
};
|
||||
|
||||
public int getScrollHeight()
|
||||
{
|
||||
return mAnimationController.mDetailsScroll.getHeight();
|
||||
}
|
||||
|
||||
public enum State
|
||||
{
|
||||
HIDDEN,
|
||||
|
@ -1201,7 +1197,7 @@ public class PlacePageView extends RelativeLayout
|
|||
mAnimationController.setOnVisibilityChangedListener(listener);
|
||||
}
|
||||
|
||||
public void setOnAnimationListener(BasePlacePageAnimationController.OnAnimationListener listener)
|
||||
public void setOnAnimationListener(@Nullable BasePlacePageAnimationController.OnAnimationListener listener)
|
||||
{
|
||||
mAnimationController.setOnProgressListener(listener);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue