Skip to content

Commit 743bcaa

Browse files
committed
优化
1 parent 8c5c624 commit 743bcaa

File tree

2 files changed

+17
-27
lines changed

2 files changed

+17
-27
lines changed

app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt

+11-27
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,6 @@ import androidx.core.view.isVisible
1717
import androidx.lifecycle.lifecycleScope
1818
import androidx.recyclerview.widget.LinearLayoutManager
1919
import androidx.recyclerview.widget.PagerSnapHelper
20-
import androidx.recyclerview.widget.RecyclerView
2120
import com.bumptech.glide.Glide
2221
import com.bumptech.glide.integration.recyclerview.RecyclerViewPreloader
2322
import com.bumptech.glide.request.target.Target.SIZE_ORIGINAL
@@ -58,6 +57,7 @@ import io.legado.app.ui.widget.recycler.LoadMoreView
5857
import io.legado.app.utils.GSON
5958
import io.legado.app.utils.NetworkUtils
6059
import io.legado.app.utils.StartActivityContract
60+
import io.legado.app.utils.canScroll
6161
import io.legado.app.utils.fastBinarySearch
6262
import io.legado.app.utils.findCenterViewPosition
6363
import io.legado.app.utils.fromJsonObject
@@ -418,7 +418,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
418418
}
419419

420420
override fun scrollBy(distance: Int) {
421-
if (binding.recyclerView.isAtEnd()) {
421+
if (!binding.recyclerView.canScroll(1)) {
422422
return
423423
}
424424
val time = ceil(16f / distance * 10000).toInt()
@@ -657,25 +657,15 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
657657
}
658658

659659
private fun scrollToNext() {
660-
if (binding.recyclerView.isAtEnd()) {
661-
return
662-
}
663-
var dx = 0
664-
var dy = 0
665-
if (AppConfig.enableMangaHorizontalScroll) {
666-
dx = binding.recyclerView.run {
667-
width - paddingStart - paddingEnd
668-
}
669-
} else {
670-
dy = binding.recyclerView.run {
671-
height - paddingTop - paddingBottom
672-
}
673-
}
674-
binding.recyclerView.smoothScrollBy(dx, dy)
660+
scrollPageTo(1)
675661
}
676662

677663
private fun scrollToPrev() {
678-
if (binding.recyclerView.isAtStart()) {
664+
scrollPageTo(-1)
665+
}
666+
667+
private fun scrollPageTo(direction: Int) {
668+
if (!binding.recyclerView.canScroll(direction)) {
679669
return
680670
}
681671
var dx = 0
@@ -689,7 +679,9 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
689679
height - paddingTop - paddingBottom
690680
}
691681
}
692-
binding.recyclerView.smoothScrollBy(-dx, -dy)
682+
dx *= direction
683+
dy *= direction
684+
binding.recyclerView.smoothScrollBy(dx, dy)
693685
}
694686

695687
private fun showNumberPickerDialog(
@@ -731,14 +723,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
731723
}
732724
}
733725

734-
private fun RecyclerView.isAtStart(): Boolean {
735-
return !canScrollVertically(-1) && !canScrollHorizontally(-1)
736-
}
737-
738-
private fun RecyclerView.isAtEnd(): Boolean {
739-
return !canScrollVertically(1) && !canScrollHorizontally(1)
740-
}
741-
742726
fun updateWindowBrightness(brightness: Int) {
743727
val layoutParams = window.attributes
744728
val normalizedBrightness = brightness.toFloat() / 255.0f

app/src/main/java/io/legado/app/utils/ViewExtensions.kt

+6
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import androidx.recyclerview.widget.RecyclerView
3939
import androidx.viewpager.widget.ViewPager
4040
import io.legado.app.help.config.AppConfig
4141
import io.legado.app.lib.theme.TintHelper
42+
import io.legado.app.ui.book.read.page.entities.PageDirection
4243
import io.legado.app.utils.canvasrecorder.CanvasRecorder
4344
import io.legado.app.utils.canvasrecorder.record
4445
import splitties.systemservices.inputMethodManager
@@ -299,3 +300,8 @@ fun View.setBackgroundKeepPadding(@DrawableRes backgroundResId: Int) {
299300
setBackgroundResource(backgroundResId)
300301
setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom)
301302
}
303+
304+
fun View.canScroll(direction: Int): Boolean {
305+
return canScrollVertically(direction) || canScrollHorizontally(direction)
306+
}
307+

0 commit comments

Comments
 (0)