From b98bfa1480696772582af158ec99ea61404400d7 Mon Sep 17 00:00:00 2001 From: Karim Abou Zeid Date: Sun, 28 Feb 2016 15:57:21 +0100 Subject: [PATCH] Fixed the FAB animation getting stuck in the middle on older versions of Android. --- .../ui/fragments/player/PlaybackControlsFragment.java | 7 ++++--- .../com/kabouzeid/gramophone/views/PlayPauseDrawable.java | 4 ++-- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java index 7565a599..5fea1506 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java +++ b/app/src/main/java/com/kabouzeid/gramophone/ui/fragments/player/PlaybackControlsFragment.java @@ -165,11 +165,12 @@ public class PlaybackControlsFragment extends Fragment implements MusicServiceEv } private void setUpPlayPauseFab() { - updatePlayPauseDrawableState(false); - playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); final int fabColor = Color.WHITE; TintHelper.setTintAuto(playPauseFab, fabColor, true); - // because of our custom drawable we have to set the tint manually + + updatePlayPauseDrawableState(false); + // Note: set the drawable AFTER TintHelper.setTintAuto() is called + playPauseFab.setImageDrawable(playerFabPlayPauseDrawable); playPauseFab.getDrawable().mutate().setColorFilter(MaterialValueHelper.getPrimaryTextColor(getContext(), ColorUtil.isColorLight(fabColor)), PorterDuff.Mode.SRC_IN); playPauseFab.setOnClickListener(new PlayPauseButtonOnClickHandler()); playPauseFab.post(new Runnable() { diff --git a/app/src/main/java/com/kabouzeid/gramophone/views/PlayPauseDrawable.java b/app/src/main/java/com/kabouzeid/gramophone/views/PlayPauseDrawable.java index a6a3cd9e..ce85e138 100644 --- a/app/src/main/java/com/kabouzeid/gramophone/views/PlayPauseDrawable.java +++ b/app/src/main/java/com/kabouzeid/gramophone/views/PlayPauseDrawable.java @@ -105,7 +105,7 @@ public class PlayPauseDrawable extends Drawable { rightPauseBar.lineTo(2 * barWidth + barDist, 0); rightPauseBar.close(); - canvas.save(); + final int saveCount = canvas.save(); // Translate the play button a tiny bit to the right so it looks more centered. canvas.translate(lerp(0, pauseBarHeight / 8f, progress), 0); @@ -123,7 +123,7 @@ public class PlayPauseDrawable extends Drawable { canvas.drawPath(leftPauseBar, paint); canvas.drawPath(rightPauseBar, paint); - canvas.restore(); + canvas.restoreToCount(saveCount); } @NonNull