Glimpse: Switch to (Coil)ZoomImage
This one supports EXIF tags!
Change-Id: Icc4283d2b4d32d96d1a6c9bc831997330596e83e
diff --git a/app/Android.bp b/app/Android.bp
index 698fc2e..d4e4d90 100644
--- a/app/Android.bp
+++ b/app/Android.bp
@@ -46,7 +46,8 @@
"Glimpse_io.coil-kt_coil",
"Glimpse_io.coil-kt_coil-gif",
"Glimpse_io.coil-kt_coil-video",
- "Glimpse_com.davemorrissey.labs_subsampling-scale-image-view-androidx",
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-core-android",
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-view-coil",
],
optimize: {
diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index fc21551..c767117 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -108,8 +108,9 @@
implementation("io.coil-kt:coil-gif:2.5.0")
implementation("io.coil-kt:coil-video:2.5.0")
- // subsampling-scale-image-view
- implementation("com.davemorrissey.labs:subsampling-scale-image-view-androidx:3.10.0")
+ // ZoomImage
+ implementation("io.github.panpf.zoomimage:zoomimage-core-android:1.0.2")
+ implementation("io.github.panpf.zoomimage:zoomimage-view-coil:1.0.2")
}
configure<GenerateBpPluginExtension> {
@@ -117,8 +118,9 @@
availableInAOSP.set { module: Module ->
when {
module.group.startsWith("androidx") -> {
- // We provide our own androidx.media3
- !module.group.startsWith("androidx.media3")
+ // We provide our own androidx.media3 & annotation-jvm
+ !module.group.startsWith("androidx.media3") &&
+ module.name != "annotation-jvm"
}
module.group.startsWith("org.jetbrains") -> true
module.group == "com.google.auto.value" -> true
diff --git a/app/libs/Android.bp b/app/libs/Android.bp
index 6244b94..ba56591 100644
--- a/app/libs/Android.bp
+++ b/app/libs/Android.bp
@@ -5,6 +5,32 @@
// DO NOT EDIT THIS FILE MANUALLY
+java_import {
+ name: "Glimpse_androidx.annotation_annotation-jvm-nodeps",
+ jars: ["androidx/annotation/annotation-jvm/1.7.0/annotation-jvm-1.7.0.jar"],
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+}
+
+java_library_static {
+ name: "Glimpse_androidx.annotation_annotation-jvm",
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ static_libs: [
+ "Glimpse_androidx.annotation_annotation-jvm-nodeps",
+ "kotlin-stdlib",
+ ],
+ java_version: "1.7",
+}
+
android_library_import {
name: "Glimpse_androidx.media3_media3-common-nodeps",
aars: ["androidx/media3/media3-common/1.2.1/media3-common-1.2.1.aar"],
@@ -394,38 +420,6 @@
}
android_library_import {
- name: "Glimpse_com.davemorrissey.labs_subsampling-scale-image-view-androidx-nodeps",
- aars: ["com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/subsampling-scale-image-view-androidx-3.10.0.aar"],
- sdk_version: "34",
- min_sdk_version: "14",
- apex_available: [
- "//apex_available:platform",
- "//apex_available:anyapex",
- ],
- static_libs: [
- "androidx.appcompat_appcompat",
- "androidx.exifinterface_exifinterface",
- ],
-}
-
-android_library {
- name: "Glimpse_com.davemorrissey.labs_subsampling-scale-image-view-androidx",
- sdk_version: "34",
- min_sdk_version: "14",
- apex_available: [
- "//apex_available:platform",
- "//apex_available:anyapex",
- ],
- manifest: "com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/AndroidManifest.xml",
- static_libs: [
- "Glimpse_com.davemorrissey.labs_subsampling-scale-image-view-androidx-nodeps",
- "androidx.appcompat_appcompat",
- "androidx.exifinterface_exifinterface",
- ],
- java_version: "1.7",
-}
-
-android_library_import {
name: "Glimpse_com.google.android.material_material-nodeps",
aars: ["com/google/android/material/material/1.9.0/material-1.9.0.aar"],
sdk_version: "34",
@@ -705,3 +699,145 @@
],
java_version: "1.7",
}
+
+android_library_import {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-core-android-nodeps",
+ aars: ["io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/zoomimage-core-release.aar"],
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ static_libs: [
+ "kotlinx-coroutines-android",
+ "androidx.exifinterface_exifinterface",
+ "androidx.lifecycle_lifecycle-common",
+ "kotlin-stdlib-jdk8",
+ "Glimpse_androidx.annotation_annotation-jvm",
+ "kotlinx-coroutines-core-jvm",
+ ],
+}
+
+android_library {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-core-android",
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ manifest: "io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/AndroidManifest.xml",
+ static_libs: [
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-core-android-nodeps",
+ "kotlinx-coroutines-android",
+ "androidx.exifinterface_exifinterface",
+ "androidx.lifecycle_lifecycle-common",
+ "kotlin-stdlib-jdk8",
+ "Glimpse_androidx.annotation_annotation-jvm",
+ "kotlinx-coroutines-core-jvm",
+ ],
+ java_version: "1.7",
+}
+
+android_library_import {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-core-coil-nodeps",
+ aars: ["io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/zoomimage-core-coil-1.0.2.aar"],
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ static_libs: [
+ "Glimpse_io.coil-kt_coil",
+ "kotlin-stdlib-jdk8",
+ ],
+}
+
+android_library {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-core-coil",
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ manifest: "io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/AndroidManifest.xml",
+ static_libs: [
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-core-coil-nodeps",
+ "Glimpse_io.coil-kt_coil",
+ "kotlin-stdlib-jdk8",
+ ],
+ java_version: "1.7",
+}
+
+android_library_import {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-view-coil-nodeps",
+ aars: ["io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/zoomimage-view-coil-1.0.2.aar"],
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ static_libs: [
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-view",
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-core-coil",
+ "kotlin-stdlib-jdk8",
+ ],
+}
+
+android_library {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-view-coil",
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ manifest: "io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/AndroidManifest.xml",
+ static_libs: [
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-view-coil-nodeps",
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-view",
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-core-coil",
+ "kotlin-stdlib-jdk8",
+ ],
+ java_version: "1.7",
+}
+
+android_library_import {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-view-nodeps",
+ aars: ["io/github/panpf/zoomimage/zoomimage-view/1.0.2/zoomimage-view-1.0.2.aar"],
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ static_libs: [
+ "androidx.appcompat_appcompat",
+ "androidx.core_core-ktx",
+ "androidx.lifecycle_lifecycle-runtime-ktx",
+ "kotlin-stdlib-jdk8",
+ ],
+}
+
+android_library {
+ name: "Glimpse_io.github.panpf.zoomimage_zoomimage-view",
+ sdk_version: "34",
+ min_sdk_version: "14",
+ apex_available: [
+ "//apex_available:platform",
+ "//apex_available:anyapex",
+ ],
+ manifest: "io/github/panpf/zoomimage/zoomimage-view/1.0.2/AndroidManifest.xml",
+ static_libs: [
+ "Glimpse_io.github.panpf.zoomimage_zoomimage-view-nodeps",
+ "androidx.appcompat_appcompat",
+ "androidx.core_core-ktx",
+ "androidx.lifecycle_lifecycle-runtime-ktx",
+ "kotlin-stdlib-jdk8",
+ ],
+ java_version: "1.7",
+}
diff --git a/app/libs/androidx/annotation/annotation-jvm/1.7.0/annotation-jvm-1.7.0.jar b/app/libs/androidx/annotation/annotation-jvm/1.7.0/annotation-jvm-1.7.0.jar
new file mode 100644
index 0000000..3102808
--- /dev/null
+++ b/app/libs/androidx/annotation/annotation-jvm/1.7.0/annotation-jvm-1.7.0.jar
Binary files differ
diff --git a/app/libs/androidx/annotation/annotation-jvm/1.7.0/annotation-jvm-1.7.0.jar.license b/app/libs/androidx/annotation/annotation-jvm/1.7.0/annotation-jvm-1.7.0.jar.license
new file mode 100644
index 0000000..b0b532b
--- /dev/null
+++ b/app/libs/androidx/annotation/annotation-jvm/1.7.0/annotation-jvm-1.7.0.jar.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2013-2024 The Android Open Source Project
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/AndroidManifest.xml b/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/AndroidManifest.xml
deleted file mode 100644
index 1ce0f9a..0000000
--- a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/AndroidManifest.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="com.davemorrissey.labs.subscaleview"
- android:versionCode="1"
- android:versionName="1.0" >
-
- <uses-sdk
- android:minSdkVersion="14"
- android:targetSdkVersion="29" />
-
-</manifest>
\ No newline at end of file
diff --git a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/AndroidManifest.xml.license b/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/AndroidManifest.xml.license
deleted file mode 100644
index 2f13729..0000000
--- a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/AndroidManifest.xml.license
+++ /dev/null
@@ -1,3 +0,0 @@
-SPDX-FileCopyrightText: 2024 Dave Morrissey
-
-SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/subsampling-scale-image-view-androidx-3.10.0.aar b/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/subsampling-scale-image-view-androidx-3.10.0.aar
deleted file mode 100644
index f64efa3..0000000
--- a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/subsampling-scale-image-view-androidx-3.10.0.aar
+++ /dev/null
Binary files differ
diff --git a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/subsampling-scale-image-view-androidx-3.10.0.aar.license b/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/subsampling-scale-image-view-androidx-3.10.0.aar.license
deleted file mode 100644
index 2f13729..0000000
--- a/app/libs/com/davemorrissey/labs/subsampling-scale-image-view-androidx/3.10.0/subsampling-scale-image-view-androidx-3.10.0.aar.license
+++ /dev/null
@@ -1,3 +0,0 @@
-SPDX-FileCopyrightText: 2024 Dave Morrissey
-
-SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/AndroidManifest.xml b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/AndroidManifest.xml
new file mode 100644
index 0000000..c30ea8e
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.github.panpf.zoomimage.core" >
+
+ <uses-sdk android:minSdkVersion="16" />
+
+</manifest>
\ No newline at end of file
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/AndroidManifest.xml.license b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/AndroidManifest.xml.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/AndroidManifest.xml.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/zoomimage-core-release.aar b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/zoomimage-core-release.aar
new file mode 100644
index 0000000..171b253
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/zoomimage-core-release.aar
Binary files differ
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/zoomimage-core-release.aar.license b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/zoomimage-core-release.aar.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-android/1.0.2/zoomimage-core-release.aar.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/AndroidManifest.xml b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/AndroidManifest.xml
new file mode 100644
index 0000000..90a3e86
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.github.panpf.zoomimage.core.coil" >
+
+ <uses-sdk android:minSdkVersion="21" />
+
+</manifest>
\ No newline at end of file
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/AndroidManifest.xml.license b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/AndroidManifest.xml.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/AndroidManifest.xml.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/zoomimage-core-coil-1.0.2.aar b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/zoomimage-core-coil-1.0.2.aar
new file mode 100644
index 0000000..b90062b
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/zoomimage-core-coil-1.0.2.aar
Binary files differ
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/zoomimage-core-coil-1.0.2.aar.license b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/zoomimage-core-coil-1.0.2.aar.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-core-coil/1.0.2/zoomimage-core-coil-1.0.2.aar.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/AndroidManifest.xml b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/AndroidManifest.xml
new file mode 100644
index 0000000..481bae0
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.github.panpf.zoomimage.view.coil" >
+
+ <uses-sdk android:minSdkVersion="21" />
+
+</manifest>
\ No newline at end of file
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/AndroidManifest.xml.license b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/AndroidManifest.xml.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/AndroidManifest.xml.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/zoomimage-view-coil-1.0.2.aar b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/zoomimage-view-coil-1.0.2.aar
new file mode 100644
index 0000000..25ccd1b
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/zoomimage-view-coil-1.0.2.aar
Binary files differ
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/zoomimage-view-coil-1.0.2.aar.license b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/zoomimage-view-coil-1.0.2.aar.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view-coil/1.0.2/zoomimage-view-coil-1.0.2.aar.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/AndroidManifest.xml b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/AndroidManifest.xml
new file mode 100644
index 0000000..674953b
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/AndroidManifest.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="com.github.panpf.zoomimage.view" >
+
+ <uses-sdk android:minSdkVersion="16" />
+
+</manifest>
\ No newline at end of file
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/AndroidManifest.xml.license b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/AndroidManifest.xml.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/AndroidManifest.xml.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/zoomimage-view-1.0.2.aar b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/zoomimage-view-1.0.2.aar
new file mode 100644
index 0000000..1120c4c
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/zoomimage-view-1.0.2.aar
Binary files differ
diff --git a/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/zoomimage-view-1.0.2.aar.license b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/zoomimage-view-1.0.2.aar.license
new file mode 100644
index 0000000..1f91bd8
--- /dev/null
+++ b/app/libs/io/github/panpf/zoomimage/zoomimage-view/1.0.2/zoomimage-view-1.0.2.aar.license
@@ -0,0 +1,3 @@
+SPDX-FileCopyrightText: 2024 panpf
+
+SPDX-License-Identifier: Apache-2.0
diff --git a/app/src/main/java/org/lineageos/glimpse/recyclerview/MediaViewerAdapter.kt b/app/src/main/java/org/lineageos/glimpse/recyclerview/MediaViewerAdapter.kt
index 561699b..4ad4059 100644
--- a/app/src/main/java/org/lineageos/glimpse/recyclerview/MediaViewerAdapter.kt
+++ b/app/src/main/java/org/lineageos/glimpse/recyclerview/MediaViewerAdapter.kt
@@ -17,8 +17,8 @@
import androidx.recyclerview.widget.DiffUtil
import androidx.recyclerview.widget.ListAdapter
import androidx.recyclerview.widget.RecyclerView
-import com.davemorrissey.labs.subscaleview.ImageSource
-import com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
+import coil.load
+import com.github.panpf.zoomimage.CoilZoomImageView
import org.lineageos.glimpse.R
import org.lineageos.glimpse.ext.fade
import org.lineageos.glimpse.models.Media
@@ -26,6 +26,7 @@
import org.lineageos.glimpse.models.MediaType
import org.lineageos.glimpse.viewmodels.MediaViewerUIViewModel
import org.lineageos.glimpse.viewmodels.MediaViewerViewModel
+import kotlin.reflect.safeCast
class MediaViewerAdapter(
private val exoPlayer: Lazy<ExoPlayer>,
@@ -60,7 +61,7 @@
private val mediaViewerUIViewModel: MediaViewerUIViewModel,
) : RecyclerView.ViewHolder(view) {
// Views
- private val imageView = view.findViewById<SubsamplingScaleImageView>(R.id.imageView)
+ private val imageView = view.findViewById<CoilZoomImageView>(R.id.imageView)
@androidx.media3.common.util.UnstableApi
private val playerControlView = view.findViewById<PlayerControlView>(R.id.exo_controller)
@@ -129,8 +130,11 @@
updateDisplayedMedia()
- if (media.mediaType == MediaType.IMAGE) {
- imageView.setImage(ImageSource.uri(media.uri))
+ imageView.load(media.uri) {
+ MediaStoreMedia::class.safeCast(media)?.let {
+ memoryCacheKey("full_${it.id}")
+ placeholderMemoryCacheKey("thumbnail_${it.id}")
+ }
}
}
diff --git a/app/src/main/res/layout/media_view.xml b/app/src/main/res/layout/media_view.xml
index 36bce1f..ee43281 100644
--- a/app/src/main/res/layout/media_view.xml
+++ b/app/src/main/res/layout/media_view.xml
@@ -9,7 +9,7 @@
android:layout_height="match_parent">
<!-- Images -->
- <com.davemorrissey.labs.subscaleview.SubsamplingScaleImageView
+ <com.github.panpf.zoomimage.CoilZoomImageView
android:id="@+id/imageView"
android:layout_width="0dp"
android:layout_height="0dp"
@@ -17,7 +17,8 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
- app:layout_constraintTop_toTopOf="parent" />
+ app:layout_constraintTop_toTopOf="parent"
+ app:disabledScrollBar="true" />
<!-- Video -->
<androidx.media3.ui.PlayerView