Fix Slider crashes
This commit is contained in:
parent
8f56663059
commit
6f12a7b24a
6 changed files with 15 additions and 37 deletions
|
@ -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())
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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())
|
||||||
|
|
|
@ -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 =
|
||||||
|
|
|
@ -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(
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue