fix: Adjust the cross-fade duration according to the Global animator speed
This commit is contained in:
parent
bf165c7eff
commit
4a0c83b0a2
2 changed files with 10 additions and 4 deletions
|
@ -2,21 +2,27 @@ package code.name.monkey.retromusic.service
|
|||
|
||||
import android.animation.Animator
|
||||
import android.animation.ValueAnimator
|
||||
import android.content.Context
|
||||
import android.media.MediaPlayer
|
||||
import android.provider.Settings
|
||||
import androidx.core.animation.doOnEnd
|
||||
import code.name.monkey.retromusic.service.playback.Playback
|
||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||
|
||||
class AudioFader {
|
||||
companion object {
|
||||
|
||||
fun createFadeAnimator(
|
||||
context: Context,
|
||||
fadeInMp: MediaPlayer,
|
||||
fadeOutMp: MediaPlayer,
|
||||
endAction: (animator: Animator) -> Unit, /* Code to run when Animator Ends*/
|
||||
): Animator? {
|
||||
val duration = PreferenceUtil.crossFadeDuration * 1000
|
||||
if (duration == 0) {
|
||||
// Get Global animator scale
|
||||
val animScale = Settings.Global.getFloat(context.contentResolver, Settings.Global.ANIMATOR_DURATION_SCALE, 1f)
|
||||
|
||||
// Set duration according to the global animation scale, so cross-fade actually lasts for the duration set by the user
|
||||
val duration = (PreferenceUtil.crossFadeDuration * 1000 ) / animScale
|
||||
if (duration == 0F) {
|
||||
return null
|
||||
}
|
||||
return ValueAnimator.ofFloat(0f, 1f).apply {
|
||||
|
|
|
@ -236,7 +236,7 @@ class CrossFadePlayer(context: Context) : LocalPlayback(context) {
|
|||
|
||||
private fun crossFade(fadeInMp: MediaPlayer, fadeOutMp: MediaPlayer) {
|
||||
isCrossFading = true
|
||||
crossFadeAnimator = createFadeAnimator(fadeInMp, fadeOutMp) {
|
||||
crossFadeAnimator = createFadeAnimator(context, fadeInMp, fadeOutMp) {
|
||||
crossFadeAnimator = null
|
||||
durationListener.start()
|
||||
isCrossFading = false
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue