From a6a2ef639922dd08bb9eaf09a03bfb2a271fc1c0 Mon Sep 17 00:00:00 2001 From: Jays2Kings Date: Tue, 30 Mar 2021 23:32:28 -0400 Subject: [PATCH] More updates to move the chapter bar --- .../tachiyomi/ui/reader/ReaderActivity.kt | 19 +++++++++++---- .../ui/reader/ReaderNavGestureDetector.kt | 23 +++++++++++-------- app/src/main/res/layout/reader_nav.xml | 4 ++-- 3 files changed, 29 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index 313b521c59..810c456494 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -376,7 +376,8 @@ class ReaderActivity : } } - val gestureDetector = GestureDetectorCompat(this, ReaderNavGestureDetector(this)) + val readerNavGestureDetector = ReaderNavGestureDetector(this) + val gestureDetector = GestureDetectorCompat(this, readerNavGestureDetector) with(binding.readerNav) { listOf(root, leftChapter, rightChapter, pageSeekbar).forEach { it.setOnTouchListener { _, event -> @@ -384,16 +385,24 @@ class ReaderActivity : if (event?.action == MotionEvent.ACTION_UP) { if (!result) { val sheetBehavior = binding.chaptersSheet.root.sheetBehavior + binding.chaptersSheet.root.dispatchTouchEvent(event) if (sheetBehavior?.state != BottomSheetBehavior.STATE_SETTLING && !sheetBehavior.isCollapsed()) { - binding.chaptersSheet.root.dispatchTouchEvent(event) sheetBehavior?.collapse() } } + if (readerNavGestureDetector.lockVertical) { + // event.action = MotionEvent.ACTION_CANCEL + return@setOnTouchListener true + } } else if ((event?.action != MotionEvent.ACTION_UP || event.action != MotionEvent.ACTION_DOWN) && result) { event.action = MotionEvent.ACTION_CANCEL return@setOnTouchListener false } - result + if (it == pageSeekbar) { + readerNavGestureDetector.lockVertical + } else { + result + } } } } @@ -443,8 +452,8 @@ class ReaderActivity : height = 280.dpToPx + insets.systemWindowInsetBottom } binding.navLayout.updateLayoutParams { - leftMargin = 6.dpToPx + insets.systemWindowInsetLeft - rightMargin = 6.dpToPx + insets.systemWindowInsetRight + leftMargin = 12.dpToPx + insets.systemWindowInsetLeft + rightMargin = 12.dpToPx + insets.systemWindowInsetRight } binding.chaptersSheet.chapterRecycler.updatePaddingRelative(bottom = insets.systemWindowInsetBottom) binding.viewerContainer.requestLayout() diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavGestureDetector.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavGestureDetector.kt index acf0aa94c9..9968085222 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavGestureDetector.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderNavGestureDetector.kt @@ -12,8 +12,10 @@ class ReaderNavGestureDetector(private val activity: ReaderActivity) : GestureDe private val lastPixel = 0f private var buttonY: Float = 20f.dpToPx - private var hasScrollHorizontal = false - private var lockVertical = false + var hasScrollHorizontal = false + private set + var lockVertical = false + private set override fun onDown(e: MotionEvent): Boolean { lockVertical = false @@ -51,7 +53,7 @@ class ReaderNavGestureDetector(private val activity: ReaderActivity) : GestureDe if (hasScrollHorizontal) { activity.binding.chaptersSheet.root.sheetBehavior?.collapse() } - return lockVertical + return !hasScrollHorizontal && lockVertical } override fun onFling( @@ -61,13 +63,14 @@ class ReaderNavGestureDetector(private val activity: ReaderActivity) : GestureDe velocityY: Float ): Boolean { var result = false - val diffY = e2.rawY - e1.rawY - val diffX = e2.rawX - e1.rawX + val diffY = e2.y - e1.y + val diffX = e2.x - e1.x val sheetBehavior = activity.binding.chaptersSheet.root.sheetBehavior - if (!hasScrollHorizontal && abs(diffX) < abs(diffY) - && (abs(diffY) > SWIPE_THRESHOLD || abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) - && diffY <= 0 + if (!hasScrollHorizontal && abs(diffX) < abs(diffY) && + (abs(diffY) > SWIPE_THRESHOLD || abs(velocityY) > SWIPE_VELOCITY_THRESHOLD) && + diffY <= 0 ) { + lockVertical = true sheetBehavior?.expand() result = true } @@ -84,7 +87,7 @@ class ReaderNavGestureDetector(private val activity: ReaderActivity) : GestureDe } private companion object { - const val SWIPE_THRESHOLD = 500 - const val SWIPE_VELOCITY_THRESHOLD = 600 + const val SWIPE_THRESHOLD = 50 + const val SWIPE_VELOCITY_THRESHOLD = 200 } } diff --git a/app/src/main/res/layout/reader_nav.xml b/app/src/main/res/layout/reader_nav.xml index c87e121365..63259a1ff9 100644 --- a/app/src/main/res/layout/reader_nav.xml +++ b/app/src/main/res/layout/reader_nav.xml @@ -21,7 +21,7 @@ android:layout_width="40dp" android:layout_height="40dp" android:layout_gravity="center" - android:layout_marginStart="50dp" + android:layout_marginStart="60dp" android:background="?selectableItemBackgroundBorderless" android:layout_marginEnd="8dp" android:contentDescription="@string/previous_chapter" @@ -70,7 +70,7 @@ android:layout_height="40dp" android:layout_gravity="center" android:layout_marginStart="8dp" - android:layout_marginEnd="50dp" + android:layout_marginEnd="60dp" android:background="?selectableItemBackgroundBorderless" android:contentDescription="@string/next_chapter" android:padding="@dimen/material_layout_keylines_screen_edge_margin"