From a31a2bf1b3ff9ff088a8d1a67b91de3fc79f6d41 Mon Sep 17 00:00:00 2001 From: alexzatsepin Date: Thu, 8 Dec 2016 21:05:44 +0300 Subject: [PATCH] [android] Added stopping the traffing animation to fix incorrect behaviour of animation on Jelly Bean --- .../maps/traffic/widget/TrafficButton.java | 25 ++++++++++++------- .../widget/TrafficButtonController.java | 2 +- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java b/android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java index 0445378a5c..2bb6f38cda 100644 --- a/android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java +++ b/android/src/com/mapswithme/maps/traffic/widget/TrafficButton.java @@ -3,6 +3,7 @@ package com.mapswithme.maps.traffic.widget; import android.content.Context; import android.content.res.Resources; import android.graphics.drawable.AnimationDrawable; +import android.graphics.drawable.Drawable; import android.os.Build; import android.support.annotation.DrawableRes; import android.support.annotation.NonNull; @@ -45,35 +46,41 @@ public class TrafficButton void turnOff() { + stopWaitingAnimation(); mButton.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_off_night : R.drawable.ic_traffic_off); } void turnOn() { + stopWaitingAnimation(); mButton.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_on_night : R.drawable.ic_traffic_on); } void markAsOutdated() { + stopWaitingAnimation(); mButton.setImageResource(ThemeUtils.isNightTheme() ? R.drawable.ic_traffic_outdated_night : R.drawable.ic_traffic_outdated); } - public void setLoading(boolean isLoading) + void startWaitingAnimation() { - if (isLoading) + mButton.setImageDrawable(mLoadingAnim); + AnimationDrawable animationDrawable = (AnimationDrawable) mButton.getDrawable(); + animationDrawable.start(); + } + + private void stopWaitingAnimation() + { + Drawable drawable = mButton.getDrawable(); + if (drawable instanceof AnimationDrawable) { - mLoadingAnim.start(); - mButton.setImageDrawable(mLoadingAnim); - } - else - { - mLoadingAnim.stop(); + AnimationDrawable animation = (AnimationDrawable) drawable; + animation.stop(); mButton.setImageDrawable(null); } - mButton.invalidate(); } public void setOffset(int offsetX, int offsetY) diff --git a/android/src/com/mapswithme/maps/traffic/widget/TrafficButtonController.java b/android/src/com/mapswithme/maps/traffic/widget/TrafficButtonController.java index bf0d8ce9fa..09653bb6a0 100644 --- a/android/src/com/mapswithme/maps/traffic/widget/TrafficButtonController.java +++ b/android/src/com/mapswithme/maps/traffic/widget/TrafficButtonController.java @@ -40,7 +40,7 @@ public class TrafficButtonController implements TrafficManager.TrafficCallback @Override public void onWaitingData() { - mButton.setLoading(true); + mButton.startWaitingAnimation(); } @Override