From b9720286c31304441280e8e76c26ee6647756da1 Mon Sep 17 00:00:00 2001 From: OxygenCobalt Date: Tue, 23 Feb 2021 15:16:15 -0700 Subject: [PATCH] Move play/pause animation code Move the code responsible for the play/pause animation to the onCreateView function instead of onResume. --- .../java/org/oxycblt/auxio/MainActivity.kt | 2 ++ .../auxio/playback/CompactPlaybackFragment.kt | 20 +++++------ .../auxio/playback/PlaybackFragment.kt | 34 +++++++------------ .../oxycblt/auxio/search/SearchFragment.kt | 1 - .../main/res/drawable/ic_pause_to_play.xml | 3 +- 5 files changed, 25 insertions(+), 35 deletions(-) diff --git a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt index 789607a9a..5790589be 100644 --- a/app/src/main/java/org/oxycblt/auxio/MainActivity.kt +++ b/app/src/main/java/org/oxycblt/auxio/MainActivity.kt @@ -56,6 +56,8 @@ class MainActivity : AppCompatActivity() { override fun onNewIntent(intent: Intent?) { super.onNewIntent(intent) + // If this intent is a valid view intent that has not been used already, give it + // to PlaybackViewModel to be used later. if (intent != null) { val action = intent.action val isConsumed = intent.getBooleanExtra(KEY_INTENT_CONSUMED, false) diff --git a/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt index 9b6b0ecf4..74517c04f 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt @@ -12,7 +12,6 @@ import org.oxycblt.auxio.databinding.FragmentCompactPlaybackBinding import org.oxycblt.auxio.detail.DetailViewModel import org.oxycblt.auxio.logD import org.oxycblt.auxio.music.MusicStore -import org.oxycblt.auxio.ui.memberBinding /** * A [Fragment] that displays the currently played song at a glance, with some basic controls. @@ -24,13 +23,14 @@ import org.oxycblt.auxio.ui.memberBinding class CompactPlaybackFragment : Fragment() { private val playbackModel: PlaybackViewModel by activityViewModels() private val detailModel: DetailViewModel by activityViewModels() - private val binding by memberBinding(FragmentCompactPlaybackBinding::inflate) override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View { + val binding = FragmentCompactPlaybackBinding.inflate(inflater) + // --- UI SETUP --- binding.lifecycleOwner = viewLifecycleOwner @@ -55,6 +55,8 @@ class CompactPlaybackFragment : Fragment() { // --- VIEWMODEL SETUP --- + playbackModel.disableAnimation() + playbackModel.song.observe(viewLifecycleOwner) { song -> if (song != null) { logD("Updating song display to ${song.name}") @@ -64,20 +66,14 @@ class CompactPlaybackFragment : Fragment() { } } - logD("Fragment Created") - - return binding.root - } - - override fun onResume() { - super.onResume() - - playbackModel.disableAnimation() - playbackModel.isPlaying.observe(viewLifecycleOwner) { binding.playbackPlayPause.setPlaying(it, playbackModel.canAnimate) playbackModel.enableAnimation() } + + logD("Fragment Created") + + return binding.root } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt index 2498080b1..4f454e02b 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt @@ -1,6 +1,5 @@ package org.oxycblt.auxio.playback -import android.content.res.ColorStateList import android.os.Bundle import android.view.LayoutInflater import android.view.MenuItem @@ -32,9 +31,6 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener { playbackSong.isSelected = false } - private lateinit var accentColor: ColorStateList - private lateinit var controlColor: ColorStateList - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -44,8 +40,8 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener { // Would require writing my own variant though to avoid index updates val normalTextColor = binding.playbackDurationCurrent.currentTextColor - accentColor = Accent.get().getStateList(requireContext()) - controlColor = R.color.control_color.toStateList(requireContext()) + val accentColor = Accent.get().getStateList(requireContext()) + val controlColor = R.color.control_color.toStateList(requireContext()) // Can't set the tint of a MenuItem below Android 8, so use icons instead. val iconQueueActive = R.drawable.ic_queue.toDrawable(requireContext()) @@ -82,6 +78,8 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener { // --- VIEWMODEL SETUP -- + playbackModel.disableAnimation() + playbackModel.song.observe(viewLifecycleOwner) { song -> if (song != null) { logD("Updating song display to ${song.name}.") @@ -158,6 +156,15 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener { } } + playbackModel.isPlaying.observe(viewLifecycleOwner) { + binding.playbackPlayPause.apply { + backgroundTintList = if (it) accentColor else controlColor + setPlaying(it, playbackModel.canAnimate) + } + + playbackModel.enableAnimation() + } + detailModel.navToItem.observe(viewLifecycleOwner) { if (it != null) { findNavController().navigateUp() @@ -169,21 +176,6 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener { return binding.root } - override fun onResume() { - super.onResume() - - playbackModel.disableAnimation() - - playbackModel.isPlaying.observe(viewLifecycleOwner) { - binding.playbackPlayPause.apply { - backgroundTintList = if (it) accentColor else controlColor - setPlaying(it, playbackModel.canAnimate) - } - - playbackModel.enableAnimation() - } - } - // --- SEEK CALLBACKS --- override fun onProgressChanged(seekBar: SeekBar, progress: Int, fromUser: Boolean) { diff --git a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt index 9b7cfeeb8..dff9a62d5 100644 --- a/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/search/SearchFragment.kt @@ -32,7 +32,6 @@ import org.oxycblt.auxio.ui.toStateList /** * A [Fragment] that allows for the searching of the entire music library. - * TODO: Add "Recent Searches" & No Results indicator * @author OxygenCobalt */ class SearchFragment : Fragment() { diff --git a/app/src/main/res/drawable/ic_pause_to_play.xml b/app/src/main/res/drawable/ic_pause_to_play.xml index db8d916c7..c6d7ebcc2 100644 --- a/app/src/main/res/drawable/ic_pause_to_play.xml +++ b/app/src/main/res/drawable/ic_pause_to_play.xml @@ -1,4 +1,5 @@ - + +