From af494ae1de863a3eb4df3a14763ff1056961a71a Mon Sep 17 00:00:00 2001 From: Hiirbaf <42479509+Hiirbaf@users.noreply.github.com> Date: Thu, 3 Jul 2025 16:46:45 -0300 Subject: [PATCH 1/3] Update full_cover_dialog.xml --- app/src/main/res/layout/full_cover_dialog.xml | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/full_cover_dialog.xml b/app/src/main/res/layout/full_cover_dialog.xml index d71ee3f12b..3109621ccd 100644 --- a/app/src/main/res/layout/full_cover_dialog.xml +++ b/app/src/main/res/layout/full_cover_dialog.xml @@ -34,6 +34,25 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toTopOf="@id/button_container"/> + + - \ No newline at end of file + From 49f14ab08bdd99203a9296ddb10059e3b78941bc Mon Sep 17 00:00:00 2001 From: Hiirbaf <42479509+Hiirbaf@users.noreply.github.com> Date: Thu, 3 Jul 2025 17:09:10 -0300 Subject: [PATCH 2/3] Update FullCoverDialog.kt --- .../tachiyomi/ui/manga/FullCoverDialog.kt | 67 ++++++++++++------- 1 file changed, 42 insertions(+), 25 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt index 468f9c670f..c21b289a55 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt @@ -23,11 +23,13 @@ import android.view.animation.DecelerateInterpolator import androidx.activity.BackEventCompat import androidx.activity.ComponentDialog import androidx.activity.OnBackPressedCallback -import androidx.constraintlayout.widget.ConstraintLayout +import androidx.constraintlayout.widget.ConstraintLayout.LayoutParams import androidx.core.animation.addListener import androidx.core.content.ContextCompat import androidx.core.view.WindowInsetsCompat.Type.systemBars import androidx.core.view.WindowInsetsControllerCompat +import androidx.core.view.isInvisible +import androidx.core.view.isVisible import androidx.core.view.updateLayoutParams import androidx.transition.ChangeBounds import androidx.transition.ChangeImageTransform @@ -122,27 +124,26 @@ class FullCoverDialog(val controller: MangaDetailsController, drawable: Drawable lastY = backEvent.touchY velocityTracker.addMovement(motionEvent) motionEvent.recycle() - binding.mangaCoverFull.scaleX = 1f - maxProgress * 0.6f - binding.mangaCoverFull.translationX = + binding.mangaCoverZoom.scaleX = 1f - maxProgress * 0.6f + binding.mangaCoverZoom.translationX = maxProgress * 100f * (if (backEvent.swipeEdge == BackEventCompat.EDGE_LEFT) 1 else -1) - binding.mangaCoverFull.translationY = -maxProgress * 150f - binding.mangaCoverFull.scaleY = 1f - maxProgress * 0.6f + binding.mangaCoverZoom.translationY = -maxProgress * 150f + binding.mangaCoverZoom.scaleY = 1f - maxProgress * 0.6f } override fun handleOnBackCancelled() { - binding.mangaCoverFull.scaleX = 1f - binding.mangaCoverFull.translationX = 0f - binding.mangaCoverFull.translationY = 0f - binding.mangaCoverFull.scaleY = 1f + binding.mangaCoverZoom.scaleX = 1f + binding.mangaCoverZoom.translationX = 0f + binding.mangaCoverZoom.translationY = 0f + binding.mangaCoverZoom.scaleY = 1f } } onBackPressedDispatcher.addCallback(backPressedCallback) - binding.touchOutside.setOnClickListener { - onBackPressedDispatcher.onBackPressed() - } - binding.mangaCoverFull.setOnClickListener { - onBackPressedDispatcher.onBackPressed() + listOf(binding.touchOutside, binding.mangaCoverFull, binding.mangaCoverZoom).forEach { + it.setOnClickListener { + onBackPressedDispatcher.onBackPressed() + } } binding.btnSave.setOnClickListener { @@ -159,6 +160,7 @@ class FullCoverDialog(val controller: MangaDetailsController, drawable: Drawable .build() expandedImageView.setImageDrawable(drawable) + binding.mangaCoverZoom.setImageDrawable(drawable) val rect = Rect() thumbView.getGlobalVisibleRect(rect) @@ -166,7 +168,7 @@ class FullCoverDialog(val controller: MangaDetailsController, drawable: Drawable val topInset = systemInsets?.top ?: 0 val leftInset = systemInsets?.left ?: 0 val rightInset = systemInsets?.right ?: 0 - expandedImageView.updateLayoutParams { + expandedImageView.updateLayoutParams { height = thumbView.height width = thumbView.width topMargin = rect.top - topInset @@ -189,15 +191,17 @@ class FullCoverDialog(val controller: MangaDetailsController, drawable: Drawable if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) { activity?.window?.decorView?.animateBlur(1f, 20f, 50)?.start() } - expandedImageView.updateLayoutParams { - height = 0 - width = 0 - topMargin = defMargin + 48.dpToPx - marginStart = defMargin - marginEnd = defMargin - bottomMargin = defMargin - horizontalBias = 0.5f - verticalBias = 0.5f + listOf(expandedImageView, binding.mangaCoverZoom).forEach { + it.updateLayoutParams { + height = 0 + width = 0 + topMargin = defMargin + 48.dpToPx + marginStart = defMargin + marginEnd = defMargin + bottomMargin = defMargin + horizontalBias = 0.5f + verticalBias = 0.5f + } } // TransitionSet for the full cover because using animation for this SUCKS @@ -227,6 +231,12 @@ class FullCoverDialog(val controller: MangaDetailsController, drawable: Drawable } } playTogether(radiusAnimator, saveAnimator) + doOnEnd { + if (binding.touchOutside.isClickable) { + binding.mangaCoverFull.isInvisible = true + binding.mangaCoverZoom.isVisible = true + } + } duration = shortAnimationDuration interpolator = DecelerateInterpolator() start() @@ -266,6 +276,13 @@ class FullCoverDialog(val controller: MangaDetailsController, drawable: Drawable } val rect2 = Rect() thumbView.getGlobalVisibleRect(rect2) + binding.mangaCoverFull.scaleX = binding.mangaCoverZoom.scaleX + binding.mangaCoverFull.translationX = binding.mangaCoverZoom.translationX + binding.mangaCoverFull.translationY = binding.mangaCoverZoom.translationY + binding.mangaCoverFull.scaleY = binding.mangaCoverZoom.scaleY + binding.mangaCoverFull.isVisible = true + binding.mangaCoverZoom.isVisible = false + binding.mangaCoverZoom.isClickable = false binding.mangaCoverFull.isClickable = false binding.touchOutside.isClickable = false val expandedImageView = binding.mangaCoverFull @@ -273,7 +290,7 @@ class FullCoverDialog(val controller: MangaDetailsController, drawable: Drawable val topInset = systemInsets?.top ?: 0 val leftInset = systemInsets?.left ?: 0 val rightInset = systemInsets?.right ?: 0 - expandedImageView.updateLayoutParams { + expandedImageView.updateLayoutParams { height = thumbView.height width = thumbView.width topMargin = rect2.top - topInset From 4d3ddf6c960cbf790c1b80aa98631e5bd25a7029 Mon Sep 17 00:00:00 2001 From: Hiirbaf <42479509+Hiirbaf@users.noreply.github.com> Date: Thu, 3 Jul 2025 17:29:26 -0300 Subject: [PATCH 3/3] Update FullCoverDialog.kt --- .../main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt index c21b289a55..ca77643088 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/manga/FullCoverDialog.kt @@ -25,6 +25,7 @@ import androidx.activity.ComponentDialog import androidx.activity.OnBackPressedCallback import androidx.constraintlayout.widget.ConstraintLayout.LayoutParams import androidx.core.animation.addListener +import androidx.core.animation.doOnEnd import androidx.core.content.ContextCompat import androidx.core.view.WindowInsetsCompat.Type.systemBars import androidx.core.view.WindowInsetsControllerCompat