diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index afa6f09c4f..0e5462ca68 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -305,7 +305,6 @@ dependencies {
implementation("androidx.media3:media3-effect:$media3Version")
implementation("com.github.chrisbanes:PhotoView:2.3.0")
- implementation("pl.droidsonroids.gif:android-gif-drawable:1.2.32")
implementation("io.noties.markwon:core:$markwonVersion")
implementation("io.noties.markwon:ext-strikethrough:$markwonVersion")
diff --git a/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt b/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt
index 60894e910a..b1c32191f2 100644
--- a/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt
+++ b/app/src/main/java/com/nextcloud/talk/mediaviewer/activities/MediaViewerScreen.kt
@@ -6,6 +6,7 @@
*/
package com.nextcloud.talk.mediaviewer.activities
+import android.graphics.drawable.Animatable
import android.graphics.drawable.Drawable
import android.util.Log
import android.view.View
@@ -89,11 +90,8 @@ import com.nextcloud.talk.utils.DateConstants
import com.nextcloud.talk.utils.DateUtils
import com.nextcloud.talk.utils.DrawableUtils
import com.nextcloud.talk.utils.Mimetype
-import com.nextcloud.talk.utils.MimetypeUtils
import java.io.File
import kotlinx.coroutines.launch
-import pl.droidsonroids.gif.GifDrawable
-import pl.droidsonroids.gif.GifImageView
private const val TOOLBAR_ALPHA = 0.6f
private const val MAX_SCALE = 6.0f
@@ -306,7 +304,6 @@ private fun MediaPage(
controllerExtraBottomInsetPx: Int
) {
val isVideo = item.mimeType.startsWith(Mimetype.VIDEO_PREFIX)
- val isGif = MimetypeUtils.isGif(item.mimeType)
Box(modifier = Modifier.fillMaxSize(), contentAlignment = Alignment.Center) {
when {
@@ -320,7 +317,6 @@ private fun MediaPage(
} else {
PreviewPlaceholder(item, onToggleControls = onToggleControls)
}
- isGif -> GifPage(localPath = localPath, onToggleControls = onToggleControls)
else -> ImagePage(localPath = localPath, onToggleControls = onToggleControls)
}
}
@@ -338,19 +334,6 @@ private fun PreviewPlaceholder(item: MediaViewerItem, onToggleControls: () -> Un
}
}
-@Composable
-private fun GifPage(localPath: String, onToggleControls: () -> Unit) {
- AndroidView(
- factory = { ctx ->
- GifImageView(ctx).apply {
- setImageDrawable(GifDrawable(localPath))
- setOnClickListener { onToggleControls() }
- }
- },
- modifier = Modifier.fillMaxSize()
- )
-}
-
@Composable
private fun ImagePage(localPath: String, onToggleControls: () -> Unit) {
val context = LocalContext.current
@@ -379,7 +362,14 @@ private fun ImagePage(localPath: String, onToggleControls: () -> Unit) {
setOnOutsidePhotoTapListener { onToggleControls() }
}
},
- update = { photoView -> drawable?.let { photoView.setImageDrawable(it) } },
+ update = { photoView ->
+ drawable?.let {
+ photoView.setImageDrawable(it)
+ // Animated images (GIF, animated WebP/HEIF) decoded by Coil are not started automatically
+ (it as? Animatable)?.start()
+ }
+ },
+ onRelease = { photoView -> (photoView.drawable as? Animatable)?.stop() },
modifier = Modifier.fillMaxSize()
)
}
diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml
index 4b7cd06cb4..08cd97c0a0 100644
--- a/gradle/verification-metadata.xml
+++ b/gradle/verification-metadata.xml
@@ -190,7 +190,6 @@
-
@@ -402,12 +401,6 @@
-
-
-
-
-
-
@@ -33979,38 +33972,6 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-