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