[android] Review fixes

This commit is contained in:
Roman Romanov 2016-11-22 14:15:58 +04:00
parent 5f7a8a6fa7
commit ef34765b47
4 changed files with 65 additions and 67 deletions

View file

@ -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

View file

@ -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());
}
}

View file

@ -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);
}
}

View file

@ -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);
}