mirror of
https://github.com/gedoor/legado.git
synced 2025-08-10 00:52:30 +00:00
优化
Some checks failed
Test Build / prepare (push) Has been cancelled
Test Build / build (app, release) (push) Has been cancelled
Test Build / build (app, releaseA) (push) Has been cancelled
Test Build / prerelease (push) Has been cancelled
Test Build / lanzou (push) Has been cancelled
Test Build / test_Branch (push) Has been cancelled
Test Build / telegram (push) Has been cancelled
Some checks failed
Test Build / prepare (push) Has been cancelled
Test Build / build (app, release) (push) Has been cancelled
Test Build / build (app, releaseA) (push) Has been cancelled
Test Build / prerelease (push) Has been cancelled
Test Build / lanzou (push) Has been cancelled
Test Build / test_Branch (push) Has been cancelled
Test Build / telegram (push) Has been cancelled
This commit is contained in:
@@ -78,12 +78,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
MangaColorFilterDialog.Callback {
|
||||
|
||||
private val mLayoutManager by lazy {
|
||||
LinearLayoutManager(
|
||||
this,
|
||||
if (AppConfig.enableMangaHorizontalScroll) LinearLayoutManager.HORIZONTAL
|
||||
else LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
LinearLayoutManager(this)
|
||||
}
|
||||
private val mAdapter: MangaAdapter by lazy {
|
||||
MangaAdapter(this)
|
||||
@@ -192,10 +187,8 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
mAdapter.run {
|
||||
isHorizontal = AppConfig.enableMangaHorizontalScroll
|
||||
setMangaImageColorFilter(mMangaColorFilter)
|
||||
}
|
||||
mAdapter.setMangaImageColorFilter(mMangaColorFilter)
|
||||
setHorizontalScroll(AppConfig.enableMangaHorizontalScroll)
|
||||
binding.mRecyclerManga.run {
|
||||
adapter = mAdapter
|
||||
itemAnimator = null
|
||||
@@ -204,9 +197,9 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
mLayoutManager.initialPrefetchItemCount = 4
|
||||
mLayoutManager.isItemPrefetchEnabled = true
|
||||
setItemViewCacheSize(AppConfig.preDownloadNum)
|
||||
singlePagerScroller(AppConfig.enableMangaHorizontalScroll)
|
||||
disabledClickScroller(AppConfig.disableClickScroll)
|
||||
disabledClickScroll(AppConfig.disableClickScroll)
|
||||
disableMangaScaling(AppConfig.disableMangaScale)
|
||||
setRecyclerViewPreloader(AppConfig.mangaPreDownloadNum)
|
||||
setPreScrollListener { _, _, _, position ->
|
||||
if (mAdapter.isNotEmpty()) {
|
||||
val item = mAdapter.getItem(position)
|
||||
@@ -224,7 +217,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
}
|
||||
addRecyclerViewPreloader(AppConfig.mangaPreDownloadNum)
|
||||
}
|
||||
binding.webtoonFrame.run {
|
||||
onTouchMiddle {
|
||||
@@ -479,7 +471,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
) {
|
||||
AppConfig.mangaPreDownloadNum = it
|
||||
item.title = getString(R.string.pre_download_m, it)
|
||||
addRecyclerViewPreloader(it)
|
||||
setRecyclerViewPreloader(it)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -489,10 +481,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
disableMangaScaling(item.isChecked)
|
||||
}
|
||||
|
||||
R.id.menu_disable_click_scroller -> {
|
||||
R.id.menu_disable_click_scroll -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.disableClickScroll = item.isChecked
|
||||
disabledClickScroller(item.isChecked)
|
||||
disabledClickScroll(item.isChecked)
|
||||
}
|
||||
|
||||
R.id.menu_enable_auto_page -> {
|
||||
@@ -522,13 +514,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
showDialogFragment(MangaFooterSettingDialog())
|
||||
}
|
||||
|
||||
R.id.menu_enable_horizontal_scroller -> {
|
||||
R.id.menu_enable_horizontal_scroll -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.enableMangaHorizontalScroll = item.isChecked
|
||||
mLayoutManager.orientation =
|
||||
if (item.isChecked) LinearLayoutManager.HORIZONTAL else LinearLayoutManager.VERTICAL
|
||||
singlePagerScroller(item.isChecked)
|
||||
mAdapter.isHorizontal = item.isChecked
|
||||
setHorizontalScroll(item.isChecked)
|
||||
mAdapter.notifyDataSetChanged()
|
||||
}
|
||||
|
||||
@@ -571,7 +560,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
return super.dispatchKeyEvent(event)
|
||||
}
|
||||
|
||||
private fun addRecyclerViewPreloader(maxPreload: Int) {
|
||||
private fun setRecyclerViewPreloader(maxPreload: Int) {
|
||||
if (mRecyclerViewPreloader != null) {
|
||||
binding.mRecyclerManga.removeOnScrollListener(mRecyclerViewPreloader!!)
|
||||
}
|
||||
@@ -581,11 +570,14 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
binding.mRecyclerManga.addOnScrollListener(mRecyclerViewPreloader!!)
|
||||
}
|
||||
|
||||
private fun singlePagerScroller(enableHorizontalScroll: Boolean) {
|
||||
if (enableHorizontalScroll) {
|
||||
private fun setHorizontalScroll(enable: Boolean) {
|
||||
mAdapter.isHorizontal = enable
|
||||
if (enable) {
|
||||
mPagerSnapHelper.attachToRecyclerView(binding.mRecyclerManga)
|
||||
mLayoutManager.orientation = LinearLayoutManager.HORIZONTAL
|
||||
} else {
|
||||
mPagerSnapHelper.attachToRecyclerView(null)
|
||||
mLayoutManager.orientation = LinearLayoutManager.VERTICAL
|
||||
}
|
||||
}
|
||||
|
||||
@@ -595,10 +587,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
menu.findItem(R.id.menu_pre_manga_number).title =
|
||||
getString(R.string.pre_download_m, AppConfig.mangaPreDownloadNum)
|
||||
menu.findItem(R.id.menu_disable_manga_scale).isChecked = AppConfig.disableMangaScale
|
||||
menu.findItem(R.id.menu_disable_click_scroller).isChecked = AppConfig.disableClickScroll
|
||||
menu.findItem(R.id.menu_disable_click_scroll).isChecked = AppConfig.disableClickScroll
|
||||
menu.findItem(R.id.menu_manga_auto_page_speed).title =
|
||||
getString(R.string.manga_auto_page_speed, mMangaAutoPageSpeed)
|
||||
menu.findItem(R.id.menu_enable_horizontal_scroller).isChecked =
|
||||
menu.findItem(R.id.menu_enable_horizontal_scroll).isChecked =
|
||||
AppConfig.enableMangaHorizontalScroll
|
||||
}
|
||||
|
||||
@@ -610,8 +602,8 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
}
|
||||
}
|
||||
|
||||
private fun disabledClickScroller(disable: Boolean) {
|
||||
binding.webtoonFrame.disabledClickScroller = disable
|
||||
private fun disabledClickScroll(disable: Boolean) {
|
||||
binding.webtoonFrame.disabledClickScroll = disable
|
||||
}
|
||||
|
||||
private fun upLayoutInDisplayCutoutMode() {
|
||||
@@ -642,7 +634,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
dx = 0
|
||||
dy = height
|
||||
}
|
||||
binding.mRecyclerManga.smoothScrollBy(dx, dy, null)
|
||||
binding.mRecyclerManga.smoothScrollBy(dx, dy)
|
||||
}
|
||||
|
||||
private fun scrollToPrev() {
|
||||
@@ -664,7 +656,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, ReadMangaViewMode
|
||||
dx = 0
|
||||
dy = height
|
||||
}
|
||||
binding.mRecyclerManga.smoothScrollBy(-dx, -dy, null)
|
||||
binding.mRecyclerManga.smoothScrollBy(-dx, -dy)
|
||||
}
|
||||
|
||||
private fun startAutoPage() {
|
||||
|
||||
@@ -29,7 +29,6 @@ import io.legado.app.ui.book.manga.config.MangaColorFilterConfig
|
||||
import io.legado.app.ui.book.manga.entities.MangaPage
|
||||
import io.legado.app.ui.book.manga.entities.ReaderLoading
|
||||
import io.legado.app.utils.getCompatDrawable
|
||||
import java.util.Collections
|
||||
|
||||
|
||||
class MangaAdapter(private val context: Context) :
|
||||
@@ -215,9 +214,9 @@ class MangaAdapter(private val context: Context) :
|
||||
}
|
||||
}
|
||||
|
||||
override fun getPreloadItems(position: Int): MutableList<Any> {
|
||||
if (getItems().isEmpty()) return Collections.emptyList()
|
||||
if (position >= getItems().size) return Collections.emptyList()
|
||||
override fun getPreloadItems(position: Int): List<Any> {
|
||||
if (isEmpty()) return emptyList()
|
||||
if (position >= getItems().size) return emptyList()
|
||||
return getItems().subList(position, position + 1)
|
||||
}
|
||||
|
||||
|
||||
@@ -45,7 +45,7 @@ class WebtoonFrame : FrameLayout {
|
||||
private var mPrevPage: (() -> Unit)? = null
|
||||
fun onPrevPage(init: () -> Unit) = apply { this.mPrevPage = init }
|
||||
|
||||
var disabledClickScroller = false
|
||||
var disabledClickScroll = false
|
||||
|
||||
override fun onAttachedToWindow() {
|
||||
super.onAttachedToWindow()
|
||||
@@ -55,11 +55,11 @@ class WebtoonFrame : FrameLayout {
|
||||
mTouchMiddle?.invoke()
|
||||
}
|
||||
|
||||
blRect.contains(ev.rawX, ev.rawY) && !disabledClickScroller -> {
|
||||
blRect.contains(ev.rawX, ev.rawY) && !disabledClickScroll -> {
|
||||
mPrevPage?.invoke()
|
||||
}
|
||||
|
||||
brRect.contains(ev.rawX, ev.rawY) && !disabledClickScroller -> {
|
||||
brRect.contains(ev.rawX, ev.rawY) && !disabledClickScroll -> {
|
||||
mNextPage?.invoke()
|
||||
}
|
||||
}
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_disable_click_scroller"
|
||||
android:id="@+id/menu_disable_click_scroll"
|
||||
android:checkable="true"
|
||||
android:checked="false"
|
||||
android:title="@string/disable_manga_click_scroll"
|
||||
@@ -58,7 +58,7 @@
|
||||
app:showAsAction="never" />
|
||||
|
||||
<item
|
||||
android:id="@+id/menu_enable_horizontal_scroller"
|
||||
android:id="@+id/menu_enable_horizontal_scroll"
|
||||
android:checkable="true"
|
||||
android:checked="false"
|
||||
android:title="@string/enable_manga_horizontal_scroll"
|
||||
|
||||
Reference in New Issue
Block a user