From 9a65e40be19b6c0611d219f3a968645dfcd7c142 Mon Sep 17 00:00:00 2001 From: Koitharu Date: Wed, 5 Jan 2022 15:37:13 +0200 Subject: [PATCH] Update page flip animation --- .../reversed/ReversedPageAnimTransformer.kt | 45 +++++++++---------- .../ui/pager/standard/PageAnimTransformer.kt | 45 +++++++++---------- .../org/koitharu/kotatsu/utils/ext/ViewExt.kt | 2 + 3 files changed, 42 insertions(+), 50 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageAnimTransformer.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageAnimTransformer.kt index 1da4a9d39..87ea32b7f 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageAnimTransformer.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/reversed/ReversedPageAnimTransformer.kt @@ -5,32 +5,27 @@ import androidx.viewpager2.widget.ViewPager2 class ReversedPageAnimTransformer : ViewPager2.PageTransformer { - override fun transformPage(page: View, position: Float) { - with(page) { - val pageWidth = width - when { - position > 1 -> alpha = 0f - position >= 0 -> { - alpha = 1f - translationX = 0f - translationZ = 0f - scaleX = 1 + FACTOR * position - scaleY = 1f - } - position >= -1 -> { - alpha = 1f - translationX = pageWidth * -position - translationZ = -1f - scaleX = 1f - scaleY = 1f - } - else -> alpha = 0f + override fun transformPage(page: View, position: Float) = with(page) { + translationX = -position * width + pivotX = width.toFloat() + pivotY = height / 2f + cameraDistance = 20000f + when { + position < -1f || position > 1f -> { + alpha = 0f + rotationY = 0f + translationZ = -1f + } + position <= 0f -> { + alpha = 1f + rotationY = 0f + translationZ = 0f + } + position > 0f -> { + alpha = 1f + rotationY = 120 * position + translationZ = 2f } } } - - private companion object { - - const val FACTOR = 0.1f - } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageAnimTransformer.kt b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageAnimTransformer.kt index cd03ce8eb..1aad3c8b0 100644 --- a/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageAnimTransformer.kt +++ b/app/src/main/java/org/koitharu/kotatsu/reader/ui/pager/standard/PageAnimTransformer.kt @@ -5,32 +5,27 @@ import androidx.viewpager2.widget.ViewPager2 class PageAnimTransformer : ViewPager2.PageTransformer { - override fun transformPage(page: View, position: Float) { - page.apply { - val pageWidth = width - when { - position < -1 -> alpha = 0f - position <= 0 -> { // [-1,0] - alpha = 1f - translationX = 0f - translationZ = 0f - scaleX = 1 + FACTOR * position - scaleY = 1f - } - position <= 1 -> { // (0,1] - alpha = 1f - translationX = pageWidth * -position - translationZ = -1f - scaleX = 1f - scaleY = 1f - } - else -> alpha = 0f + override fun transformPage(page: View, position: Float) = with(page) { + translationX = -position * width + pivotX = 0f + pivotY = height / 2f + cameraDistance = 20000f + when { + position < -1f || position > 1f -> { + alpha = 0f + rotationY = 0f + translationZ = -1f + } + position > 0f -> { + alpha = 1f + rotationY = 0f + translationZ = 0f + } + position <= 0f -> { + alpha = 1f + rotationY = 120 * position + translationZ = 2f } } } - - private companion object { - - const val FACTOR = 0.1f - } } \ No newline at end of file diff --git a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt index 87e21bf2d..2bd9d2e49 100644 --- a/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt +++ b/app/src/main/java/org/koitharu/kotatsu/utils/ext/ViewExt.kt @@ -133,6 +133,8 @@ fun View.resetTransformations() { translationZ = 0f scaleX = 1f scaleY = 1f + rotationX = 0f + rotationY = 0f } inline fun RecyclerView.doOnCurrentItemChanged(crossinline callback: (Int) -> Unit) {