[Android] Fix the audio player header flickering

Nicolas Pomepuy git at videolan.org
Fri Apr 25 05:47:18 UTC 2025


vlc-android | branch: master | Nicolas Pomepuy <nicolas at videolabs.io> | Wed Apr 16 10:25:15 2025 +0200| [ab98652d4d8d03106eb1c4e02eb8154d88d4351b] | committer: Nicolas Pomepuy

Fix the audio player header flickering

It was flickering when, switching from cover mode to play queue mode

> https://code.videolan.org/videolan/vlc-android/commit/ab98652d4d8d03106eb1c4e02eb8154d88d4351b
---

 .../vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt  |  5 ++++-
 .../src/org/videolan/vlc/gui/audio/AudioPlayerAnimator.kt      | 10 ++++++++++
 2 files changed, 14 insertions(+), 1 deletion(-)

diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
index 285bccea99..2b2f790114 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayer.kt
@@ -768,7 +768,6 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
     fun onPlaylistSwitchClick(@Suppress("UNUSED_PARAMETER") view: View) {
         switchShowCover()
         settings.putSingle("audio_player_show_cover", isShowingCover())
-        lifecycleScope.launch { doUpdate() }
     }
 
     fun onShuffleClick(@Suppress("UNUSED_PARAMETER") view: View) {
@@ -1069,6 +1068,10 @@ class AudioPlayer : Fragment(), PlaylistAdapter.IPlayer, TextWatcher, IAudioPlay
         return abRepeatAddMarker
     }
 
+    fun update() {
+        lifecycleScope.launch { doUpdate() }
+    }
+
     private val hideSearchRunnable by lazy(LazyThreadSafetyMode.NONE) {
         Runnable {
             hideSearchField()
diff --git a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayerAnimator.kt b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayerAnimator.kt
index d98f5d122e..dad85fe0ee 100644
--- a/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayerAnimator.kt
+++ b/application/vlc-android/src/org/videolan/vlc/gui/audio/AudioPlayerAnimator.kt
@@ -35,6 +35,7 @@ import androidx.constraintlayout.widget.ConstraintLayout
 import androidx.constraintlayout.widget.ConstraintSet
 import androidx.lifecycle.LifecycleObserver
 import androidx.transition.AutoTransition
+import androidx.transition.Transition
 import androidx.transition.TransitionManager
 import androidx.window.layout.FoldingFeature
 import com.google.android.material.bottomsheet.BottomSheetBehavior
@@ -95,6 +96,15 @@ internal class AudioPlayerAnimator : IAudioPlayerAnimator, LifecycleObserver {
     private val transition = AutoTransition().apply {
         interpolator = AccelerateDecelerateInterpolator()
         duration = 300
+        addListener(object : Transition.TransitionListener {
+            override fun onTransitionStart(transition: Transition) { }
+            override fun onTransitionEnd(transition: Transition) {
+                audioPlayer.update()
+            }
+            override fun onTransitionCancel(transition: Transition) { }
+            override fun onTransitionPause(transition: Transition) { }
+            override fun onTransitionResume(transition: Transition) { }
+        })
     }
     private var showCover = false
         set(value) {



More information about the Android mailing list