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