Fix Slider crashes

This commit is contained in:
Prathamesh More 2022-06-12 20:56:58 +05:30
parent 8f56663059
commit 6f12a7b24a
6 changed files with 15 additions and 37 deletions

View file

@ -14,12 +14,10 @@
*/ */
package code.name.monkey.retromusic.activities package code.name.monkey.retromusic.activities
import android.animation.ObjectAnimator
import android.content.Intent import android.content.Intent
import android.graphics.Color import android.graphics.Color
import android.graphics.PorterDuff import android.graphics.PorterDuff
import android.os.Bundle import android.os.Bundle
import android.view.animation.LinearInterpolator
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import code.name.monkey.retromusic.R import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity import code.name.monkey.retromusic.activities.base.AbsMusicServiceActivity
@ -27,7 +25,6 @@ import code.name.monkey.retromusic.databinding.ActivityDriveModeBinding
import code.name.monkey.retromusic.db.toSongEntity import code.name.monkey.retromusic.db.toSongEntity
import code.name.monkey.retromusic.extensions.accentColor import code.name.monkey.retromusic.extensions.accentColor
import code.name.monkey.retromusic.extensions.drawAboveSystemBars import code.name.monkey.retromusic.extensions.drawAboveSystemBars
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.glide.BlurTransformation import code.name.monkey.retromusic.glide.BlurTransformation
import code.name.monkey.retromusic.glide.GlideApp import code.name.monkey.retromusic.glide.GlideApp
import code.name.monkey.retromusic.glide.RetroGlideExtension import code.name.monkey.retromusic.glide.RetroGlideExtension
@ -246,12 +243,10 @@ class DriveModeActivity : AbsMusicServiceActivity(), Callback {
} }
override fun onUpdateProgressViews(progress: Int, total: Int) { override fun onUpdateProgressViews(progress: Int, total: Int) {
binding.progressSlider.valueTo = total.toFloat() binding.progressSlider.run {
valueTo = total.toFloat()
val animator = ObjectAnimator.ofFloat(binding.progressSlider, "value", progress.toFloat()) value = progress.toFloat().coerceIn(valueFrom, valueTo)
animator.duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME }
animator.interpolator = LinearInterpolator()
animator.start()
binding.songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) binding.songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong())
binding.songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) binding.songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong())

View file

@ -82,9 +82,8 @@ abstract class AbsPlayerControlsFragment(@LayoutRes layout: Int) : AbsMusicServi
if (seekBar == null) { if (seekBar == null) {
progressSlider?.valueTo = total.toFloat() progressSlider?.valueTo = total.toFloat()
if (progress > total) return progressSlider?.value =
progressSlider?.value = progress.toFloat() progress.toFloat().coerceIn(progressSlider?.valueFrom, progressSlider?.valueTo)
} else { } else {
seekBar?.max = total seekBar?.max = total

View file

@ -35,7 +35,6 @@ import code.name.monkey.retromusic.R
import code.name.monkey.retromusic.databinding.FragmentCirclePlayerBinding import code.name.monkey.retromusic.databinding.FragmentCirclePlayerBinding
import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist import code.name.monkey.retromusic.fragments.base.goToArtist
@ -315,16 +314,10 @@ class CirclePlayerFragment : AbsPlayerFragment(R.layout.fragment_circle_player),
val progressSlider = binding.progressSlider val progressSlider = binding.progressSlider
progressSlider.valueTo = total.toFloat() progressSlider.valueTo = total.toFloat()
if (isSeeking) { progressSlider.valueTo = total.toFloat()
progressSlider.value = progress.toFloat()
} else { progressSlider.value =
progressAnimator = progress.toFloat().coerceIn(progressSlider.valueFrom, progressSlider.valueTo)
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
interpolator = LinearInterpolator()
start()
}
}
binding.songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong()) binding.songTotalTime.text = MusicUtil.getReadableDurationString(total.toLong())
binding.songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong()) binding.songCurrentProgress.text = MusicUtil.getReadableDurationString(progress.toLong())

View file

@ -22,7 +22,6 @@ import android.graphics.PorterDuff
import android.graphics.drawable.AnimatedVectorDrawable import android.graphics.drawable.AnimatedVectorDrawable
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import android.view.animation.LinearInterpolator
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.widget.PopupMenu import androidx.appcompat.widget.PopupMenu
import androidx.appcompat.widget.Toolbar import androidx.appcompat.widget.Toolbar
@ -41,7 +40,6 @@ import code.name.monkey.retromusic.adapter.song.PlayingQueueAdapter
import code.name.monkey.retromusic.databinding.FragmentGradientPlayerBinding import code.name.monkey.retromusic.databinding.FragmentGradientPlayerBinding
import code.name.monkey.retromusic.extensions.* import code.name.monkey.retromusic.extensions.*
import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener import code.name.monkey.retromusic.fragments.MusicSeekSkipTouchListener
import code.name.monkey.retromusic.fragments.base.AbsPlayerControlsFragment
import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment import code.name.monkey.retromusic.fragments.base.AbsPlayerFragment
import code.name.monkey.retromusic.fragments.base.goToAlbum import code.name.monkey.retromusic.fragments.base.goToAlbum
import code.name.monkey.retromusic.fragments.base.goToArtist import code.name.monkey.retromusic.fragments.base.goToArtist
@ -573,16 +571,9 @@ class GradientPlayerFragment : AbsPlayerFragment(R.layout.fragment_gradient_play
val progressSlider = binding.playbackControlsFragment.progressSlider val progressSlider = binding.playbackControlsFragment.progressSlider
progressSlider.valueTo = total.toFloat() progressSlider.valueTo = total.toFloat()
if (isSeeking) { progressSlider.value =
progressSlider.value = progress.toFloat() progress.toFloat().coerceIn(progressSlider.valueFrom, progressSlider.valueTo)
} else {
progressAnimator =
ObjectAnimator.ofFloat(progressSlider, "value", progress.toFloat()).apply {
duration = AbsPlayerControlsFragment.SLIDER_ANIMATION_TIME
interpolator = LinearInterpolator()
start()
}
}
binding.playbackControlsFragment.songTotalTime.text = binding.playbackControlsFragment.songTotalTime.text =
MusicUtil.getReadableDurationString(total.toLong()) MusicUtil.getReadableDurationString(total.toLong())
binding.playbackControlsFragment.songCurrentProgress.text = binding.playbackControlsFragment.songCurrentProgress.text =

View file

@ -19,7 +19,7 @@ class AudioFader {
if (duration == 0) { if (duration == 0) {
return null return null
} }
return ValueAnimator.ofFloat(1f, 0f).apply { return ValueAnimator.ofFloat(0f, 1f).apply {
this.duration = duration.toLong() this.duration = duration.toLong()
addUpdateListener { animation: ValueAnimator -> addUpdateListener { animation: ValueAnimator ->
fadeInMp.setVolume( fadeInMp.setVolume(

View file

@ -303,7 +303,7 @@ class CrossFadePlayer(context: Context) : LocalPlayback(context) {
private fun switchPlayer() { private fun switchPlayer() {
getNextPlayer()?.start() getNextPlayer()?.start()
crossFade(getCurrentPlayer()!!, getNextPlayer()!!) crossFade(getNextPlayer()!!, getCurrentPlayer()!!)
currentPlayer = currentPlayer =
if (currentPlayer == CurrentPlayer.PLAYER_ONE || currentPlayer == CurrentPlayer.NOT_SET) { if (currentPlayer == CurrentPlayer.PLAYER_ONE || currentPlayer == CurrentPlayer.NOT_SET) {
CurrentPlayer.PLAYER_TWO CurrentPlayer.PLAYER_TWO