diff --git a/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt b/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt index 53c1ca915..d08cc91b5 100644 --- a/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt +++ b/app/src/main/java/org/oxycblt/auxio/coil/CoilUtils.kt @@ -52,7 +52,7 @@ fun ImageView.bindGenreImage(genre: Genre) { /** * Custom extension function similar to the stock coil load extensions, but handles whether - * to even show images and custom fetchers. + * to show images and custom fetchers. */ inline fun ImageView.load( data: T, @@ -80,9 +80,9 @@ inline fun ImageView.load( // --- OTHER FUNCTIONS --- /** - * Get a bitmap for a [song]. [onDone] will be called when the bitmap is loaded. + * Get a bitmap for a [song]. [onDone] will be called with the loaded bitmap, or null if loading + * failed/shouldn't occur. * **This not meant for UIs, instead use the Binding Adapters.** - * @param onDone What to do with the bitmap when the loading is finished. Bitmap will be null if loading failed/shouldn't occur. */ fun loadBitmap(context: Context, song: Song, onDone: (Bitmap?) -> Unit) { val settingsManager = SettingsManager.getInstance() 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 d1ae2a2ce..c07a6360e 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/CompactPlaybackFragment.kt @@ -80,11 +80,11 @@ class CompactPlaybackFragment : Fragment() { playbackModel.isPlaying.observe(viewLifecycleOwner) { if (it) { binding.playbackPlayPause.showPause(playbackModel.canAnimate) - playbackModel.enableAnimation() } else { binding.playbackPlayPause.showPlay(playbackModel.canAnimate) - playbackModel.enableAnimation() } + + playbackModel.enableAnimation() } } } diff --git a/app/src/main/java/org/oxycblt/auxio/playback/PlayPauseButton.kt b/app/src/main/java/org/oxycblt/auxio/playback/PlayPauseButton.kt index d4207f004..8473839ab 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlayPauseButton.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlayPauseButton.kt @@ -45,12 +45,6 @@ class PlayPauseButton @JvmOverloads constructor( } } - /** - * Hack that fixes an issue where a seam will display on the play button on certain display - * sizes due to floating point precision problems (Gotta love IEEE 754) - * This is done by detecting when the animation has ended and then reverting this - * view to the normal static image. Not possible below API 23 though. - */ @RequiresApi(Build.VERSION_CODES.M) private fun fixSeams() { iconPauseToPlay.registerAnimationCallback(object : Animatable2.AnimationCallback() { @@ -59,4 +53,12 @@ class PlayPauseButton @JvmOverloads constructor( } }) } + + override fun onDetachedFromWindow() { + super.onDetachedFromWindow() + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + iconPauseToPlay.clearAnimationCallbacks() + } + } } 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 069b4cc08..821be2577 100644 --- a/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt +++ b/app/src/main/java/org/oxycblt/auxio/playback/PlaybackFragment.kt @@ -193,12 +193,12 @@ class PlaybackFragment : Fragment(), SeekBar.OnSeekBarChangeListener { if (it) { binding.playbackPlayPause.showPause(playbackModel.canAnimate) binding.playbackPlayPause.backgroundTintList = accentColor - playbackModel.enableAnimation() } else { binding.playbackPlayPause.showPlay(playbackModel.canAnimate) binding.playbackPlayPause.backgroundTintList = controlColor - playbackModel.enableAnimation() } + + playbackModel.enableAnimation() } }