优化
This commit is contained in:
@@ -3,9 +3,9 @@ package io.legado.app.model.recyclerView
|
||||
|
||||
data class MangeContent(
|
||||
var mChapterPagePos: Int = 0,//总章节位置
|
||||
var mChapterPageCount:Int,//总章节数量
|
||||
var mChapterPageCount: Int,//总章节数量
|
||||
var mChapterNextPagePos: Int = 0,//下一章
|
||||
val mImageUrl: String="",//当前URL
|
||||
var mDurChapterPos:Int=0,//当前章节位置
|
||||
var mDurChapterCount:Int=0//当前章节内容总数
|
||||
val mImageUrl: String = "",//当前URL
|
||||
var mDurChapterPos: Int = 0,//当前章节位置
|
||||
var mDurChapterCount: Int = 0//当前章节内容总数
|
||||
)
|
||||
@@ -69,21 +69,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
private val mAdapter: MangaAdapter by lazy {
|
||||
MangaAdapter(this@ReadMangaActivity)
|
||||
}
|
||||
private val mPreDownloadNum by lazy {
|
||||
AppConfig.mangaPreDownloadNum
|
||||
}
|
||||
private val mSinglePageScroller by lazy {
|
||||
AppConfig.singlePageScrolling
|
||||
}
|
||||
|
||||
private val mDisableMangaScaling by lazy {
|
||||
AppConfig.disableMangaScaling
|
||||
}
|
||||
|
||||
private val mDisableClickScroller by lazy {
|
||||
AppConfig.disableClickScroller
|
||||
}
|
||||
|
||||
private val mSmoothScroller by lazy {
|
||||
object : LinearSmoothScroller(this@ReadMangaActivity) {
|
||||
override fun getVerticalSnapPreference(): Int {
|
||||
@@ -126,7 +111,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
}
|
||||
private var mMenu: Menu? = null
|
||||
|
||||
|
||||
private var mRecyclerViewPreloader: RecyclerViewPreloader<Any>? = null
|
||||
|
||||
private val networkChangedListener by lazy {
|
||||
@@ -168,8 +152,27 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
ReadManga.register(this)
|
||||
disableMangaScaling(mDisableMangaScaling)
|
||||
upSystemUiVisibility(false)
|
||||
initRecyclerView()
|
||||
binding.tvRetry.setOnClickListener {
|
||||
binding.llLoading.isVisible = true
|
||||
binding.llRetry.isGone = true
|
||||
mFirstLoading = false
|
||||
ReadManga.loadContent()
|
||||
}
|
||||
|
||||
mAdapter.addFooterView {
|
||||
ViewLoadMoreBinding.bind(loadMoreView)
|
||||
}
|
||||
loadMoreView.setOnClickListener {
|
||||
if (!loadMoreView.isLoading && !ReadManga.gameOver) {
|
||||
scrollToBottom(true, ReadManga.durChapterPagePos)
|
||||
}
|
||||
}
|
||||
loadMoreView.gone()
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
binding.mRecyclerMange.run {
|
||||
adapter = mAdapter
|
||||
itemAnimator = null
|
||||
@@ -178,8 +181,9 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
mLayoutManager.initialPrefetchItemCount = 4
|
||||
mLayoutManager.isItemPrefetchEnabled = true
|
||||
setItemViewCacheSize(AppConfig.preDownloadNum)
|
||||
singlePagerScroller(mSinglePageScroller)
|
||||
disabledClickScroller(mDisableClickScroller)
|
||||
singlePagerScroller(AppConfig.singlePageScrolling)
|
||||
disabledClickScroller(AppConfig.disableClickScroller)
|
||||
disableMangaScaling(AppConfig.disableMangaScaling)
|
||||
setPreScrollListener { _, _, dy, position ->
|
||||
if (dy > 0 && position + 2 > mAdapter.getCurrentList().size - 3) {
|
||||
if (mAdapter.getCurrentList().last() is ReaderLoading) {
|
||||
@@ -199,7 +203,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
val content = mAdapter.getCurrentList()[position]
|
||||
if (content is MangeContent) {
|
||||
ReadManga.durChapterPos = content.mDurChapterPos.minus(1)
|
||||
upText(
|
||||
upInfoBar(
|
||||
content.mChapterPagePos,
|
||||
content.mChapterPageCount,
|
||||
content.mDurChapterPos,
|
||||
@@ -212,7 +216,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
|
||||
}
|
||||
}
|
||||
addRecyclerViewPreloader(mPreDownloadNum)
|
||||
addRecyclerViewPreloader(AppConfig.mangaPreDownloadNum)
|
||||
onToucheMiddle {
|
||||
if (!binding.mangaMenu.isVisible) {
|
||||
binding.mangaMenu.runMenuIn()
|
||||
@@ -225,22 +229,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
scrollToPrev()
|
||||
}
|
||||
}
|
||||
binding.tvRetry.setOnClickListener {
|
||||
binding.llLoading.isVisible = true
|
||||
binding.llRetry.isGone = true
|
||||
mFirstLoading = false
|
||||
ReadManga.loadContent()
|
||||
}
|
||||
|
||||
mAdapter.addFooterView {
|
||||
ViewLoadMoreBinding.bind(loadMoreView)
|
||||
}
|
||||
loadMoreView.setOnClickListener {
|
||||
if (!loadMoreView.isLoading && !ReadManga.gameOver) {
|
||||
scrollToBottom(true, ReadManga.durChapterPagePos)
|
||||
}
|
||||
}
|
||||
loadMoreView.gone()
|
||||
}
|
||||
|
||||
override fun onNewIntent(intent: Intent) {
|
||||
@@ -271,7 +259,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
if (!mFirstLoading) {
|
||||
if (list.size > 1) {
|
||||
binding.infobar.isVisible = true
|
||||
upText(
|
||||
upInfoBar(
|
||||
ReadManga.durChapterPagePos.plus(1),
|
||||
ReadManga.durChapterPageCount,
|
||||
ReadManga.durChapterPos.plus(1),
|
||||
@@ -300,7 +288,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
}
|
||||
}
|
||||
|
||||
private fun upText(
|
||||
private fun upInfoBar(
|
||||
chapterPagePos: Int, chapterPageCount: Int, chapterPos: Int, chapterCount: Int,
|
||||
) {
|
||||
binding.infobar.update(
|
||||
@@ -475,7 +463,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
}
|
||||
|
||||
R.id.menu_manga_auto_page_speed -> {
|
||||
showNumberPickerDialog(1,getString(R.string.setting_manga_auto_page_speed), 3) {
|
||||
showNumberPickerDialog(1, getString(R.string.setting_manga_auto_page_speed), 3) {
|
||||
AppConfig.mangaAutoPageSpeed = it
|
||||
mMangaAutoPageSpeed = it
|
||||
item.title = getString(R.string.manga_auto_page_speed, it)
|
||||
@@ -540,10 +528,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
private fun upMenu(menu: Menu) {
|
||||
this.mMenu = menu
|
||||
menu.findItem(R.id.menu_pre_manga_number).title =
|
||||
getString(R.string.pre_download_m, mPreDownloadNum)
|
||||
menu.findItem(R.id.menu_scroller_page).isChecked = mSinglePageScroller
|
||||
menu.findItem(R.id.menu_disable_manga_scaling).isChecked = mDisableMangaScaling
|
||||
menu.findItem(R.id.menu_disable_click_scroller).isChecked = mDisableClickScroller
|
||||
getString(R.string.pre_download_m, AppConfig.mangaPreDownloadNum)
|
||||
menu.findItem(R.id.menu_scroller_page).isChecked = AppConfig.singlePageScrolling
|
||||
menu.findItem(R.id.menu_disable_manga_scaling).isChecked = AppConfig.disableMangaScaling
|
||||
menu.findItem(R.id.menu_disable_click_scroller).isChecked = AppConfig.disableClickScroller
|
||||
menu.findItem(R.id.menu_manga_auto_page_speed).title =
|
||||
getString(R.string.manga_auto_page_speed, mMangaAutoPageSpeed)
|
||||
}
|
||||
@@ -582,7 +570,6 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
smoothScrollToPosition(nextPosition)
|
||||
}
|
||||
|
||||
|
||||
private fun scrollToPrev() {
|
||||
val firstCompletelyVisiblePosition = mLayoutManager.findFirstCompletelyVisibleItemPosition()
|
||||
val prevPosition = if (firstCompletelyVisiblePosition != RecyclerView.NO_POSITION) {
|
||||
@@ -611,7 +598,12 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
autoScrollHandler.removeCallbacks(autoScrollRunnable)
|
||||
}
|
||||
|
||||
private fun showNumberPickerDialog(min:Int,title: String, initValue: Int, callback: (Int) -> Unit) {
|
||||
private fun showNumberPickerDialog(
|
||||
min: Int,
|
||||
title: String,
|
||||
initValue: Int,
|
||||
callback: (Int) -> Unit
|
||||
) {
|
||||
NumberPickerDialog(this)
|
||||
.setTitle(title)
|
||||
.setMaxValue(9999)
|
||||
|
||||
Reference in New Issue
Block a user