From dad225196302f8791ca08c67e0de4863bd4c11f1 Mon Sep 17 00:00:00 2001
From: JSPark <48265129+pknujsp@users.noreply.github.com>
Date: Fri, 2 Jun 2023 00:06:27 +0900
Subject: [PATCH] =?UTF-8?q?#91=20AI=EC=B9=B4=EB=A9=94=EB=9D=BC=20=ED=99=94?=
=?UTF-8?q?=EB=A9=B4=20=EC=98=A4=EB=A5=98=20=EC=88=98=EC=A0=95=20=EC=99=84?=
=?UTF-8?q?=EB=A3=8C?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../src/main/res/drawable/baseline_add_24.xml | 5 ++
.../main/res/drawable/baseline_remove_24.xml | 5 ++
feature/camera/build.gradle.kts | 1 +
.../imagedialog/DetectedImageFragment.kt | 66 +++++--------------
.../layout/fragment_detected_image_dialog.xml | 52 +++++++++++++--
.../camera/src/main/res/values/strings.xml | 3 +
feature/camera/src/main/res/values/styles.xml | 9 +++
gradle/libs.versions.toml | 2 +
settings.gradle.kts | 2 +
9 files changed, 90 insertions(+), 55 deletions(-)
create mode 100644 core/ui/src/main/res/drawable/baseline_add_24.xml
create mode 100644 core/ui/src/main/res/drawable/baseline_remove_24.xml
create mode 100644 feature/camera/src/main/res/values/styles.xml
diff --git a/core/ui/src/main/res/drawable/baseline_add_24.xml b/core/ui/src/main/res/drawable/baseline_add_24.xml
new file mode 100644
index 000000000..89633bb12
--- /dev/null
+++ b/core/ui/src/main/res/drawable/baseline_add_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/core/ui/src/main/res/drawable/baseline_remove_24.xml b/core/ui/src/main/res/drawable/baseline_remove_24.xml
new file mode 100644
index 000000000..3e0b7768f
--- /dev/null
+++ b/core/ui/src/main/res/drawable/baseline_remove_24.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/feature/camera/build.gradle.kts b/feature/camera/build.gradle.kts
index a679d4ac5..a57f97217 100644
--- a/feature/camera/build.gradle.kts
+++ b/feature/camera/build.gradle.kts
@@ -50,5 +50,6 @@ dependencies {
implementation(libs.bundles.navigations)
implementation(libs.bundles.lifecycles)
implementation(libs.kotlinx.datetime)
+ implementation(libs.photo.view)
}
\ No newline at end of file
diff --git a/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt b/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt
index 391abddd3..cbfa973b6 100644
--- a/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt
+++ b/feature/camera/src/main/java/com/android/mediproject/feature/camera/imagedialog/DetectedImageFragment.kt
@@ -1,23 +1,15 @@
package com.android.mediproject.feature.camera.imagedialog
-import android.annotation.SuppressLint
-import android.app.Dialog
import android.os.Bundle
import android.view.LayoutInflater
-import android.view.ScaleGestureDetector
-import android.view.ScaleGestureDetector.SimpleOnScaleGestureListener
import android.view.View
import android.view.ViewGroup
-import android.view.Window
import androidx.fragment.app.DialogFragment
import androidx.fragment.app.activityViewModels
-import com.android.mediproject.core.common.bindingadapter.GlideApp
-import com.android.mediproject.core.common.viewmodel.UiState
import com.android.mediproject.feature.camera.MedicinesDetectorViewModel
+import com.android.mediproject.feature.camera.R
import com.android.mediproject.feature.camera.databinding.FragmentDetectedImageDialogBinding
import dagger.hilt.android.AndroidEntryPoint
-import kotlinx.coroutines.flow.collectLatest
-import repeatOnStarted
@AndroidEntryPoint
@@ -27,48 +19,26 @@ class DetectedImageFragment : DialogFragment() {
private val medicinesDetectorViewModel by activityViewModels()
- private lateinit var scaleGestureDetector: ScaleGestureDetector
-
- override fun onCreateDialog(savedInstanceState: Bundle?): Dialog = super.onCreateDialog(savedInstanceState).also { dialog ->
- dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
- dialog.setCanceledOnTouchOutside(false)
- dialog.setCancelable(false)
- }
-
-
- @SuppressLint("ClickableViewAccessibility")
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- binding.viewModel = medicinesDetectorViewModel
- viewLifecycleOwner.repeatOnStarted {
- medicinesDetectorViewModel.capturedImage.collectLatest {
- when (it) {
- is UiState.Success -> {
- GlideApp.with(requireContext()).load(it.data).into(binding.imageView)
- }
- else -> {
-
- }
- }
- }
- }
binding.apply {
- scaleGestureDetector = ScaleGestureDetector(requireContext(), object : SimpleOnScaleGestureListener() {
- private var mScaleFactor = 1.0f
-
- override fun onScale(detector: ScaleGestureDetector): Boolean {
- mScaleFactor *= scaleGestureDetector.scaleFactor
- mScaleFactor = maxOf(0.1f, minOf(mScaleFactor, 10.0f))
- imageView.scaleX = mScaleFactor
- imageView.scaleY = mScaleFactor
- return true
- }
- })
-
- imageView.setOnTouchListener { v, event ->
- scaleGestureDetector.onTouchEvent(event)
+ viewModel = medicinesDetectorViewModel
+ backBtn.setOnClickListener {
+ dismiss()
+ }
+ imageView.minimumScale = 1.0f
+ imageView.maximumScale = 2.5f
+ zoomIn.setOnClickListener {
+ val scale = imageView.scale + 0.4f
+ if (scale <= imageView.maximumScale) imageView.setScale(scale, true)
+ else imageView.setScale(imageView.maximumScale, true)
+ }
+ zoomOut.setOnClickListener {
+ val scale = imageView.scale - 0.4f
+ if (scale >= imageView.minimumScale) imageView.setScale(scale, true)
+ else imageView.setScale(imageView.minimumScale, true)
}
}
}
@@ -79,9 +49,7 @@ class DetectedImageFragment : DialogFragment() {
return binding.root
}
- override fun getView(): View {
- return binding.root
- }
+ override fun getTheme(): Int = R.style.DialogFullscreen
override fun onDestroyView() {
_binding = null
diff --git a/feature/camera/src/main/res/layout/fragment_detected_image_dialog.xml b/feature/camera/src/main/res/layout/fragment_detected_image_dialog.xml
index 3acb2d52e..371e70d28 100644
--- a/feature/camera/src/main/res/layout/fragment_detected_image_dialog.xml
+++ b/feature/camera/src/main/res/layout/fragment_detected_image_dialog.xml
@@ -10,19 +10,59 @@
-
+ android:layout_height="match_parent">
-
-
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/feature/camera/src/main/res/values/strings.xml b/feature/camera/src/main/res/values/strings.xml
index c4709551d..f3d39f1f1 100644
--- a/feature/camera/src/main/res/values/strings.xml
+++ b/feature/camera/src/main/res/values/strings.xml
@@ -14,5 +14,8 @@
AI를 초기화하는 중입니다.
Processing...
+ 캡처된 이미지
+ 축소
+ 확대
\ No newline at end of file
diff --git a/feature/camera/src/main/res/values/styles.xml b/feature/camera/src/main/res/values/styles.xml
new file mode 100644
index 000000000..a7e3ce1e6
--- /dev/null
+++ b/feature/camera/src/main/res/values/styles.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml
index 2a2406743..d0e21ed04 100644
--- a/gradle/libs.versions.toml
+++ b/gradle/libs.versions.toml
@@ -10,6 +10,7 @@ ksp = "1.8.21-1.0.11"
androidGradlePlugin = "8.0.1"
androidDesugarJdkLibs = "2.0.3"
+photoview = "2.3.0"
# androidx
androidXPagingCompose = "1.0.0-alpha19"
@@ -218,6 +219,7 @@ okhttp-logginginterceptor = { module = "com.squareup.okhttp3:logging-interceptor
glide-main = { module = "com.github.bumptech.glide:glide", version.ref = "glide" }
glide-kapt = { module = "com.github.bumptech.glide:compiler", version.ref = "glide" }
glide-kapt-arch = { module = "android.arch.lifecycle:compiler", version.ref = "androidArchLifecycle" }
+photo-view = { module = "com.github.chrisbanes:PhotoView", version.ref = "photoview" }
# lottie --------------------------------------------------------------------------------------------------------------
lottie = { module = "com.airbnb.android:lottie", version.ref = "lottie" }
diff --git a/settings.gradle.kts b/settings.gradle.kts
index c63ff9d05..c1aca6307 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -4,6 +4,7 @@ pluginManagement {
google()
mavenCentral()
gradlePluginPortal()
+ maven { url = uri("https://www.jitpack.io") }
}
}
@@ -12,6 +13,7 @@ dependencyResolutionManagement {
repositories {
google()
mavenCentral()
+ maven { url = uri("https://www.jitpack.io") }
}
}
enableFeaturePreview("TYPESAFE_PROJECT_ACCESSORS")