Using com.github.chrisbanes:PhotoView for Image & PDF file viewer
This commit is contained in:
parent
bef62ce2b3
commit
dbdc06bbff
5 changed files with 8 additions and 63 deletions
|
@ -237,6 +237,8 @@ dependencies {
|
|||
implementation 'com.github.bumptech.glide:glide:4.12.0'
|
||||
kapt 'com.github.bumptech.glide:compiler:4.12.0'
|
||||
|
||||
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
|
||||
|
||||
implementation platform('com.google.firebase:firebase-bom:26.4.0')
|
||||
if (crashlyticsEnabled()) {
|
||||
implementation 'com.google.firebase:firebase-crashlytics-ndk'
|
||||
|
|
|
@ -21,9 +21,6 @@ package org.linphone.activities.main.files.fragments
|
|||
|
||||
import android.annotation.SuppressLint
|
||||
import android.os.Bundle
|
||||
import android.view.GestureDetector
|
||||
import android.view.MotionEvent
|
||||
import android.view.ScaleGestureDetector
|
||||
import androidx.lifecycle.ViewModelProvider
|
||||
import org.linphone.R
|
||||
import org.linphone.activities.main.files.viewmodels.ImageFileViewModel
|
||||
|
@ -36,10 +33,6 @@ class ImageViewerFragment : SecureFragment<ImageViewerFragmentBinding>() {
|
|||
private lateinit var viewModel: ImageFileViewModel
|
||||
private lateinit var sharedViewModel: SharedMainViewModel
|
||||
|
||||
private lateinit var gestureDetector: GestureDetector
|
||||
private lateinit var scaleGestureDetector: ScaleGestureDetector
|
||||
private var scaleFactor = 1.0f
|
||||
|
||||
override fun getLayoutId(): Int = R.layout.image_viewer_fragment
|
||||
|
||||
@SuppressLint("ClickableViewAccessibility")
|
||||
|
@ -65,55 +58,5 @@ class ImageViewerFragment : SecureFragment<ImageViewerFragmentBinding>() {
|
|||
binding.viewModel = viewModel
|
||||
|
||||
isSecure = arguments?.getBoolean("Secure") ?: false
|
||||
|
||||
gestureDetector = GestureDetector(requireContext(), object :
|
||||
GestureDetector.SimpleOnGestureListener() {
|
||||
override fun onDoubleTap(e: MotionEvent?): Boolean {
|
||||
scaleFactor = if (scaleFactor == 1.0f) 2.0f else 1.0f
|
||||
binding.imageView.scaleX = scaleFactor
|
||||
binding.imageView.scaleY = scaleFactor
|
||||
return true
|
||||
}
|
||||
|
||||
override fun onScroll(
|
||||
e1: MotionEvent?,
|
||||
e2: MotionEvent?,
|
||||
distanceX: Float,
|
||||
distanceY: Float
|
||||
): Boolean {
|
||||
if (scaleFactor <= 1.0f) return false
|
||||
|
||||
val scrollX = binding.imageView.scrollX + distanceX.toInt()
|
||||
binding.imageView.scrollX = scrollX
|
||||
|
||||
val scrollY = binding.imageView.scrollY + distanceY.toInt()
|
||||
binding.imageView.scrollY = scrollY
|
||||
return true
|
||||
}
|
||||
})
|
||||
|
||||
scaleGestureDetector = ScaleGestureDetector(requireContext(), object :
|
||||
ScaleGestureDetector.SimpleOnScaleGestureListener() {
|
||||
override fun onScale(detector: ScaleGestureDetector): Boolean {
|
||||
scaleFactor *= detector.scaleFactor
|
||||
scaleFactor = scaleFactor.coerceIn(0.1f, 5.0f)
|
||||
binding.imageView.scaleX = scaleFactor
|
||||
binding.imageView.scaleY = scaleFactor
|
||||
return false
|
||||
}
|
||||
})
|
||||
|
||||
binding.imageView.setOnTouchListener { _, event ->
|
||||
val previousScaleFactor = scaleFactor
|
||||
scaleGestureDetector.onTouchEvent(event)
|
||||
|
||||
if (previousScaleFactor != scaleFactor) {
|
||||
// Prevent touch event from going further
|
||||
return@setOnTouchListener true
|
||||
}
|
||||
|
||||
gestureDetector.onTouchEvent(event)
|
||||
return@setOnTouchListener true
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -28,8 +28,7 @@
|
|||
android:layout_below="@id/top_bar_fragment"
|
||||
android:orientation="vertical">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/imageView"
|
||||
<com.github.chrisbanes.photoview.PhotoView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:adjustViewBounds="true"
|
||||
|
|
|
@ -9,7 +9,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
<ImageView
|
||||
<com.github.chrisbanes.photoview.PhotoView
|
||||
android:id="@+id/pdf_image"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
||||
|
||||
buildscript {
|
||||
ext.kotlin_version = '1.4.31'
|
||||
ext.kotlin_version = '1.4.32'
|
||||
|
||||
repositories {
|
||||
google()
|
||||
|
@ -9,14 +9,14 @@ buildscript {
|
|||
maven {
|
||||
url "https://plugins.gradle.org/m2/"
|
||||
}
|
||||
|
||||
maven { url "https://www.jitpack.io" } // for com.github.chrisbanes:PhotoView
|
||||
}
|
||||
dependencies {
|
||||
classpath 'com.android.tools.build:gradle:4.1.3'
|
||||
classpath 'com.google.gms:google-services:4.3.5'
|
||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||
classpath "org.jlleitschuh.gradle:ktlint-gradle:9.1.1"
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.1'
|
||||
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.5.2'
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -24,6 +24,7 @@ allprojects {
|
|||
repositories {
|
||||
google()
|
||||
jcenter()
|
||||
maven { url "https://www.jitpack.io" } // for com.github.chrisbanes:PhotoView
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue