Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRoman Romanov <rromanov@65gb.net>2016-12-13 08:07:25 +0300
committerRoman Romanov <rromanov@65gb.net>2016-12-13 08:07:25 +0300
commit2d3229d6ed4f46dc3e04d609426461484d2e911d (patch)
tree2c07187dd6726c6e6d83f629e8d17c4a9e8be036 /android
parent657bd88190f8b5bc21ef06d8336f926c9abb23d0 (diff)
[android] PP banner icon animations.
Diffstat (limited to 'android')
-rw-r--r--android/src/com/mapswithme/maps/widget/placepage/BannerController.java45
1 files changed, 37 insertions, 8 deletions
diff --git a/android/src/com/mapswithme/maps/widget/placepage/BannerController.java b/android/src/com/mapswithme/maps/widget/placepage/BannerController.java
index c969ed004d..dc8a020ba2 100644
--- a/android/src/com/mapswithme/maps/widget/placepage/BannerController.java
+++ b/android/src/com/mapswithme/maps/widget/placepage/BannerController.java
@@ -1,5 +1,6 @@
package com.mapswithme.maps.widget.placepage;
+import android.animation.ValueAnimator;
import android.content.res.Resources;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
@@ -13,6 +14,7 @@ import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.drawable.GlideDrawable;
import com.bumptech.glide.request.RequestListener;
import com.bumptech.glide.request.target.Target;
+import com.mapswithme.maps.MwmApplication;
import com.mapswithme.maps.R;
import com.mapswithme.maps.bookmarks.data.Banner;
import com.mapswithme.util.ConnectionState;
@@ -23,6 +25,9 @@ import static com.mapswithme.util.SharedPropertiesUtils.isShowcaseSwitchedOnLoca
final class BannerController implements View.OnClickListener
{
+ private static final int DURATION_DEFAULT =
+ MwmApplication.get().getResources().getInteger(R.integer.anim_default);
+
@Nullable
private Banner mBanner;
@Nullable
@@ -50,6 +55,9 @@ final class BannerController implements View.OnClickListener
private boolean mIsOpened = false;
+ @Nullable
+ private ValueAnimator mIconAnimator;
+
BannerController(@NonNull View bannerView, @Nullable OnBannerClickListener listener)
{
mFrame = bannerView;
@@ -135,17 +143,38 @@ final class BannerController implements View.OnClickListener
mFrame.setLayoutParams(lp);
}
- private void setIconParams(float size, float marginRight, float marginTop)
+ private void setIconParams(final float size, final float marginRight, final float marginTop)
{
- if (mIcon == null)
+ if (mIcon == null || UiUtils.isHidden(mIcon))
return;
- ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) mIcon.getLayoutParams();
- lp.height = (int) size;
- lp.width = (int) size;
- lp.rightMargin = (int) marginRight;
- lp.topMargin = (int) marginTop;
- mIcon.setLayoutParams(lp);
+ if (mIconAnimator != null)
+ mIconAnimator.cancel();
+
+ final ViewGroup.MarginLayoutParams lp = (ViewGroup.MarginLayoutParams) mIcon.getLayoutParams();
+ final float startSize = lp.height;
+ final float startRight = lp.rightMargin;
+ final float startTop = lp.topMargin;
+ mIconAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
+ if (mIconAnimator == null)
+ return;
+
+ mIconAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
+ {
+ @Override
+ public void onAnimationUpdate(ValueAnimator animation)
+ {
+ float t = (float) animation.getAnimatedValue();
+ int newSize = (int) (startSize + t * (size - startSize));
+ lp.height = newSize;
+ lp.width = newSize;
+ lp.rightMargin = (int) (startRight + t * (marginRight - startRight));
+ lp.topMargin = (int) (startTop + t * (marginTop - startTop));
+ mIcon.setLayoutParams(lp);
+ }
+ });
+ mIconAnimator.setDuration(DURATION_DEFAULT);
+ mIconAnimator.start();
}
private void loadIcon(@NonNull Banner banner)