Browse Source

Animate download icon

arkon 4 năm trước cách đây
mục cha
commit
3cb64669e4

+ 21 - 0
app/src/main/java/eu/kanade/tachiyomi/ui/manga/chapter/ChapterDownloadView.kt

@@ -1,5 +1,6 @@
 package eu.kanade.tachiyomi.ui.manga.chapter
 
+import android.animation.ObjectAnimator
 import android.content.Context
 import android.util.AttributeSet
 import android.view.LayoutInflater
@@ -13,6 +14,9 @@ class ChapterDownloadView @JvmOverloads constructor(context: Context, attrs: Att
 
     private val binding: ChapterDownloadViewBinding
 
+    private var downloadIconAnimator: ObjectAnimator? = null
+    private var isAnimating = false
+
     init {
         binding = ChapterDownloadViewBinding.inflate(LayoutInflater.from(context), this, false)
         addView(binding.root)
@@ -20,7 +24,24 @@ class ChapterDownloadView @JvmOverloads constructor(context: Context, attrs: Att
 
     fun setState(state: Download.State) {
         binding.downloadIconBorder.isVisible = state == Download.State.NOT_DOWNLOADED
+
         binding.downloadIcon.isVisible = state == Download.State.NOT_DOWNLOADED || state == Download.State.DOWNLOADING
+        if (state == Download.State.DOWNLOADING) {
+            if (!isAnimating) {
+                downloadIconAnimator =
+                    ObjectAnimator.ofFloat(binding.downloadIcon, "alpha", 1f, 0f).apply {
+                        duration = 1000
+                        repeatCount = ObjectAnimator.INFINITE
+                        repeatMode = ObjectAnimator.REVERSE
+                    }
+                downloadIconAnimator?.start()
+                isAnimating = true
+            }
+        } else {
+            downloadIconAnimator?.cancel()
+            binding.downloadIcon.alpha = 1f
+            isAnimating = false
+        }
 
         binding.downloadProgress.isVisible = state == Download.State.DOWNLOADING || state == Download.State.QUEUE
         // TODO: show actual download progress