This commit is contained in:
Horis
2025-03-23 16:40:06 +08:00
parent c3f84dc909
commit 83527174ea
2 changed files with 17 additions and 27 deletions
@@ -17,7 +17,6 @@ import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.PagerSnapHelper import androidx.recyclerview.widget.PagerSnapHelper
import androidx.recyclerview.widget.RecyclerView
import com.bumptech.glide.Glide import com.bumptech.glide.Glide
import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader
import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL
@@ -58,6 +57,7 @@ import io.legado.app.ui.widget.recycler.LoadMoreView
import io.legado.app.utils.GSON import io.legado.app.utils.GSON
import io.legado.app.utils.NetworkUtils import io.legado.app.utils.NetworkUtils
import io.legado.app.utils.StartActivityContract import io.legado.app.utils.StartActivityContract
import io.legado.app.utils.canScroll
import io.legado.app.utils.fastBinarySearch import io.legado.app.utils.fastBinarySearch
import io.legado.app.utils.findCenterViewPosition import io.legado.app.utils.findCenterViewPosition
import io.legado.app.utils.fromJsonObject import io.legado.app.utils.fromJsonObject
@@ -418,7 +418,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
} }
override fun scrollBy(distance: Int) { override fun scrollBy(distance: Int) {
if (binding.recyclerView.isAtEnd()) { if (!binding.recyclerView.canScroll(1)) {
return return
} }
val time = ceil(16f / distance * 10000).toInt() val time = ceil(16f / distance * 10000).toInt()
@@ -657,25 +657,15 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
} }
private fun scrollToNext() { private fun scrollToNext() {
if (binding.recyclerView.isAtEnd()) { scrollPageTo(1)
return
}
var dx = 0
var dy = 0
if (AppConfig.enableMangaHorizontalScroll) {
dx = binding.recyclerView.run {
width - paddingStart - paddingEnd
}
} else {
dy = binding.recyclerView.run {
height - paddingTop - paddingBottom
}
}
binding.recyclerView.smoothScrollBy(dx, dy)
} }
private fun scrollToPrev() { private fun scrollToPrev() {
if (binding.recyclerView.isAtStart()) { scrollPageTo(-1)
}
private fun scrollPageTo(direction: Int) {
if (!binding.recyclerView.canScroll(direction)) {
return return
} }
var dx = 0 var dx = 0
@@ -689,7 +679,9 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
height - paddingTop - paddingBottom height - paddingTop - paddingBottom
} }
} }
binding.recyclerView.smoothScrollBy(-dx, -dy) dx *= direction
dy *= direction
binding.recyclerView.smoothScrollBy(dx, dy)
} }
private fun showNumberPickerDialog( private fun showNumberPickerDialog(
@@ -731,14 +723,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
} }
} }
private fun RecyclerView.isAtStart(): Boolean {
return !canScrollVertically(-1) && !canScrollHorizontally(-1)
}
private fun RecyclerView.isAtEnd(): Boolean {
return !canScrollVertically(1) && !canScrollHorizontally(1)
}
fun updateWindowBrightness(brightness: Int) { fun updateWindowBrightness(brightness: Int) {
val layoutParams = window.attributes val layoutParams = window.attributes
val normalizedBrightness = brightness.toFloat() / 255.0f val normalizedBrightness = brightness.toFloat() / 255.0f
@@ -39,6 +39,7 @@ import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager.widget.ViewPager import androidx.viewpager.widget.ViewPager
import io.legado.app.help.config.AppConfig import io.legado.app.help.config.AppConfig
import io.legado.app.lib.theme.TintHelper import io.legado.app.lib.theme.TintHelper
import io.legado.app.ui.book.read.page.entities.PageDirection
import io.legado.app.utils.canvasrecorder.CanvasRecorder import io.legado.app.utils.canvasrecorder.CanvasRecorder
import io.legado.app.utils.canvasrecorder.record import io.legado.app.utils.canvasrecorder.record
import splitties.systemservices.inputMethodManager import splitties.systemservices.inputMethodManager
@@ -299,3 +300,8 @@ fun View.setBackgroundKeepPadding(@DrawableRes backgroundResId: Int) {
setBackgroundResource(backgroundResId) setBackgroundResource(backgroundResId)
setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom) setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom)
} }
fun View.canScroll(direction: Int): Boolean {
return canScrollVertically(direction) || canScrollHorizontally(direction)
}