[Android] Fix blank covers on TV

Nicolas Pomepuy git at videolan.org
Thu Aug 8 13:53:59 CEST 2019


vlc-android | branch: 3.2.x | Nicolas Pomepuy <nicolas.pomepuy at gmail.com> | Wed Aug  7 12:08:11 2019 +0200| [429268ce18853eca629a7c773a6637acd57afab3] | committer: Geoffrey Métais

Fix blank covers on TV

(cherry picked from commit fab123e26c080002b4dfe41bc74e6f535593fda0)

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

 vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt  |  5 +++++
 vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt |  5 +++++
 vlc-android/src/org/videolan/vlc/gui/view/FadableImageView.kt | 11 ++++++++---
 3 files changed, 18 insertions(+), 3 deletions(-)

diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt
index 34b469ed4..533cd6b12 100644
--- a/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/tv/FileTvItemAdapter.kt
@@ -66,6 +66,11 @@ class FileTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler, va
         }
     }
 
+    override fun onViewRecycled(holder: MediaTvItemAdapter.AbstractMediaItemViewHolder<MediaBrowserTvItemBinding>) {
+        super.onViewRecycled(holder)
+        holder.recycle()
+    }
+
     override fun hasSections() = true
 
     override fun setOnFocusChangeListener(focusListener: FocusableRecyclerView.FocusListener?) {
diff --git a/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt b/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt
index e674b84db..f6303ff97 100644
--- a/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/tv/MediaTvItemAdapter.kt
@@ -75,6 +75,11 @@ class MediaTvItemAdapter(type: Int, private val eventsHandler: IEventsHandler, v
         }
     }
 
+    override fun onViewRecycled(holder: AbstractMediaItemViewHolder<ViewDataBinding>) {
+        super.onViewRecycled(holder)
+        holder.recycle()
+    }
+
     override fun hasSections() = true
 
     override fun submitList(pagedList: Any?) {
diff --git a/vlc-android/src/org/videolan/vlc/gui/view/FadableImageView.kt b/vlc-android/src/org/videolan/vlc/gui/view/FadableImageView.kt
index bbc70e08f..33170be6b 100644
--- a/vlc-android/src/org/videolan/vlc/gui/view/FadableImageView.kt
+++ b/vlc-android/src/org/videolan/vlc/gui/view/FadableImageView.kt
@@ -2,13 +2,17 @@ package org.videolan.vlc.gui.view
 
 import android.content.Context
 import android.graphics.Bitmap
+import android.graphics.drawable.ColorDrawable
 import android.graphics.drawable.Drawable
 import android.graphics.drawable.Icon
 import android.net.Uri
 import android.util.AttributeSet
 import androidx.appcompat.widget.AppCompatImageView
+import java.util.concurrent.atomic.AtomicBoolean
 
 class FadableImageView : AppCompatImageView {
+    private var animationRunning = AtomicBoolean(false)
+
     constructor(context: Context) : super(context)
 
     constructor(context: Context, attrs: AttributeSet) : super(context, attrs)
@@ -16,9 +20,10 @@ class FadableImageView : AppCompatImageView {
     constructor(context: Context, attrs: AttributeSet, defStyle: Int) : super(context, attrs, defStyle)
 
     private fun fade() {
+        if (animationRunning.get()) return
         alpha = 0f
-        animate().cancel()
-        animate().alpha(1f)
+        animationRunning.set(true)
+        animate().withEndAction { animationRunning.set(false) }.alpha(1f)
     }
 
     fun resetFade() {
@@ -30,7 +35,7 @@ class FadableImageView : AppCompatImageView {
 
     override fun setBackground(background: Drawable?) {
         super.setBackground(background)
-        if (background != null) fade() else resetFade()
+        if (background == null || background is ColorDrawable) resetFade() else fade()
     }
 
     override fun setBackgroundResource(resid: Int) {



More information about the Android mailing list