From 01009745083951bff263fdd38d878c641ca5022f Mon Sep 17 00:00:00 2001 From: Koitharu Date: Mon, 11 May 2020 14:04:51 +0300 Subject: [PATCH] Optimize webtoon scroll --- .../ui/reader/wetoon/WebtoonRecyclerView.kt | 37 ++++++++++--------- .../kotatsu/ui/utils/AppCrashHandler.kt | 3 +- 2 files changed, 21 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/reader/wetoon/WebtoonRecyclerView.kt b/app/src/main/java/org/koitharu/kotatsu/ui/reader/wetoon/WebtoonRecyclerView.kt index 348108299..68287403e 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/reader/wetoon/WebtoonRecyclerView.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/reader/wetoon/WebtoonRecyclerView.kt @@ -2,16 +2,27 @@ package org.koitharu.kotatsu.ui.reader.wetoon import android.content.Context import android.util.AttributeSet -import android.view.Gravity -import android.view.View +import androidx.core.view.ViewCompat import androidx.core.view.children import androidx.recyclerview.widget.RecyclerView -import kotlin.math.sign class WebtoonRecyclerView @JvmOverloads constructor( context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0 ) : RecyclerView(context, attrs, defStyleAttr) { + override fun startNestedScroll(axes: Int) = startNestedScroll(axes, ViewCompat.TYPE_TOUCH) + + override fun startNestedScroll(axes: Int, type: Int): Boolean { + return true + } + + override fun dispatchNestedPreScroll( + dx: Int, + dy: Int, + consumed: IntArray?, + offsetInWindow: IntArray? + ) = dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow, ViewCompat.TYPE_TOUCH) + override fun dispatchNestedPreScroll( dx: Int, dy: Int, @@ -20,21 +31,11 @@ class WebtoonRecyclerView @JvmOverloads constructor( type: Int ): Boolean { val consumedY = consumeVerticalScroll(dy) - val superRes = super.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow, type) - consumed?.set(1, consumed[1] + consumedY) - return superRes || consumedY != 0 - } - - override fun dispatchNestedPreScroll( - dx: Int, - dy: Int, - consumed: IntArray?, - offsetInWindow: IntArray? - ): Boolean { - val consumedY = consumeVerticalScroll(dy) - val superRes = super.dispatchNestedPreScroll(dx, dy, consumed, offsetInWindow) - consumed?.set(1, consumed[1] + consumedY) - return superRes || consumedY != 0 + if (consumed != null) { + consumed[0] = 0 + consumed[1] = consumedY + } + return consumedY != 0 } private fun consumeVerticalScroll(dy: Int): Int { diff --git a/app/src/main/java/org/koitharu/kotatsu/ui/utils/AppCrashHandler.kt b/app/src/main/java/org/koitharu/kotatsu/ui/utils/AppCrashHandler.kt index 4f4e701bf..5f7b5964c 100644 --- a/app/src/main/java/org/koitharu/kotatsu/ui/utils/AppCrashHandler.kt +++ b/app/src/main/java/org/koitharu/kotatsu/ui/utils/AppCrashHandler.kt @@ -2,6 +2,7 @@ package org.koitharu.kotatsu.ui.utils import android.content.Context import android.content.Intent +import android.util.Log import java.io.PrintWriter import java.io.StringWriter import kotlin.system.exitProcess @@ -22,7 +23,7 @@ class AppCrashHandler(private val applicationContext: Context) : Thread.Uncaught } catch (t: Throwable) { t.printStackTrace() } - e.printStackTrace() + Log.e("CRASH", e.message, e) exitProcess(1) } } \ No newline at end of file