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.Animator
|
||||||
import android.animation.ValueAnimator
|
import android.animation.ValueAnimator
|
||||||
|
import android.content.Context
|
||||||
import android.media.MediaPlayer
|
import android.media.MediaPlayer
|
||||||
|
import android.provider.Settings
|
||||||
import androidx.core.animation.doOnEnd
|
import androidx.core.animation.doOnEnd
|
||||||
import code.name.monkey.retromusic.service.playback.Playback
|
import code.name.monkey.retromusic.service.playback.Playback
|
||||||
import code.name.monkey.retromusic.util.PreferenceUtil
|
import code.name.monkey.retromusic.util.PreferenceUtil
|
||||||
|
|
||||||
class AudioFader {
|
class AudioFader {
|
||||||
companion object {
|
companion object {
|
||||||
|
|
||||||
fun createFadeAnimator(
|
fun createFadeAnimator(
|
||||||
|
context: Context,
|
||||||
fadeInMp: MediaPlayer,
|
fadeInMp: MediaPlayer,
|
||||||
fadeOutMp: MediaPlayer,
|
fadeOutMp: MediaPlayer,
|
||||||
endAction: (animator: Animator) -> Unit, /* Code to run when Animator Ends*/
|
endAction: (animator: Animator) -> Unit, /* Code to run when Animator Ends*/
|
||||||
): Animator? {
|
): Animator? {
|
||||||
val duration = PreferenceUtil.crossFadeDuration * 1000
|
// Get Global animator scale
|
||||||
if (duration == 0) {
|
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 null
|
||||||
}
|
}
|
||||||
return ValueAnimator.ofFloat(0f, 1f).apply {
|
return ValueAnimator.ofFloat(0f, 1f).apply {
|
||||||
|
|
|
@ -236,7 +236,7 @@ class CrossFadePlayer(context: Context) : LocalPlayback(context) {
|
||||||
|
|
||||||
private fun crossFade(fadeInMp: MediaPlayer, fadeOutMp: MediaPlayer) {
|
private fun crossFade(fadeInMp: MediaPlayer, fadeOutMp: MediaPlayer) {
|
||||||
isCrossFading = true
|
isCrossFading = true
|
||||||
crossFadeAnimator = createFadeAnimator(fadeInMp, fadeOutMp) {
|
crossFadeAnimator = createFadeAnimator(context, fadeInMp, fadeOutMp) {
|
||||||
crossFadeAnimator = null
|
crossFadeAnimator = null
|
||||||
durationListener.start()
|
durationListener.start()
|
||||||
isCrossFading = false
|
isCrossFading = false
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue