优化
This commit is contained in:
@@ -98,9 +98,9 @@ object PreferKey {
|
||||
const val mangaPreDownloadNum = "mangaPreDownloadNum"
|
||||
const val mangaAutoPageSpeed = "mangaAutoPageSpeed"
|
||||
const val mangaFooterConfig = "mangaFooterConfig"
|
||||
const val singlePageScrolling = "singlePageScrolling"
|
||||
const val disableClickScroller = "disableClickScroller"
|
||||
const val enableMangaHorizontalScroller="enableMangaHorizontalScroller"
|
||||
const val singlePageScroll = "singlePageScroll"
|
||||
const val disableClickScroll = "disableClickScroll"
|
||||
const val enableMangaHorizontalScroll = "enableMangaHorizontalScroll"
|
||||
const val autoRefresh = "auto_refresh"
|
||||
const val defaultToRead = "defaultToRead"
|
||||
const val exportCharset = "exportCharset"
|
||||
@@ -160,7 +160,7 @@ object PreferKey {
|
||||
const val pauseReadAloudWhilePhoneCalls = "pauseReadAloudWhilePhoneCalls"
|
||||
const val readAloudByMediaButton = "readAloudByMediaButton"
|
||||
const val showMangaUi = "showMangaUi"
|
||||
const val disableMangaScaling = "disableMangaScaling"
|
||||
const val disableMangaScale = "disableMangaScale"
|
||||
|
||||
const val cPrimary = "colorPrimary"
|
||||
const val cAccent = "colorAccent"
|
||||
|
||||
@@ -610,10 +610,10 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
get() = appCtx.getPrefBoolean(PreferKey.showMangaUi, true)
|
||||
|
||||
//禁用漫画缩放
|
||||
var disableMangaScaling: Boolean
|
||||
get() = appCtx.getPrefBoolean(PreferKey.disableMangaScaling, true)
|
||||
var disableMangaScale: Boolean
|
||||
get() = appCtx.getPrefBoolean(PreferKey.disableMangaScale, true)
|
||||
set(value) {
|
||||
appCtx.putPrefBoolean(PreferKey.disableMangaScaling, value)
|
||||
appCtx.putPrefBoolean(PreferKey.disableMangaScale, value)
|
||||
}
|
||||
|
||||
//漫画预加载数量
|
||||
@@ -624,17 +624,17 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
}
|
||||
|
||||
//单页滚动
|
||||
var singlePageScrolling
|
||||
get() = appCtx.getPrefBoolean(PreferKey.singlePageScrolling, false)
|
||||
var singlePageScroll
|
||||
get() = appCtx.getPrefBoolean(PreferKey.singlePageScroll, false)
|
||||
set(value) {
|
||||
appCtx.putPrefBoolean(PreferKey.singlePageScrolling, value)
|
||||
appCtx.putPrefBoolean(PreferKey.singlePageScroll, value)
|
||||
}
|
||||
|
||||
//点击翻页
|
||||
var disableClickScroller
|
||||
get() = appCtx.getPrefBoolean(PreferKey.disableClickScroller, false)
|
||||
var disableClickScroll
|
||||
get() = appCtx.getPrefBoolean(PreferKey.disableClickScroll, false)
|
||||
set(value) {
|
||||
appCtx.putPrefBoolean(PreferKey.disableClickScroller, value)
|
||||
appCtx.putPrefBoolean(PreferKey.disableClickScroll, value)
|
||||
}
|
||||
|
||||
//漫画滚动速度
|
||||
@@ -652,10 +652,10 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
|
||||
}
|
||||
|
||||
//漫画水平滚动
|
||||
var enableMangaHorizontalScroller
|
||||
get() = appCtx.getPrefBoolean(PreferKey.enableMangaHorizontalScroller, false)
|
||||
var enableMangaHorizontalScroll
|
||||
get() = appCtx.getPrefBoolean(PreferKey.enableMangaHorizontalScroll, false)
|
||||
set(value) {
|
||||
appCtx.putPrefBoolean(PreferKey.enableMangaHorizontalScroller, value)
|
||||
appCtx.putPrefBoolean(PreferKey.enableMangaHorizontalScroll, value)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
private val mLayoutManager by lazy {
|
||||
LinearLayoutManager(
|
||||
this@ReadMangaActivity,
|
||||
if (AppConfig.enableMangaHorizontalScroller) LinearLayoutManager.HORIZONTAL else LinearLayoutManager.VERTICAL,
|
||||
if (AppConfig.enableMangaHorizontalScroll) LinearLayoutManager.HORIZONTAL else LinearLayoutManager.VERTICAL,
|
||||
false
|
||||
)
|
||||
}
|
||||
@@ -191,7 +191,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
}
|
||||
|
||||
private fun initRecyclerView() {
|
||||
mAdapter.isHorizontal = AppConfig.enableMangaHorizontalScroller
|
||||
mAdapter.isHorizontal = AppConfig.enableMangaHorizontalScroll
|
||||
binding.mRecyclerMange.run {
|
||||
adapter = mAdapter
|
||||
itemAnimator = null
|
||||
@@ -201,11 +201,11 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
mLayoutManager.isItemPrefetchEnabled = true
|
||||
setItemViewCacheSize(AppConfig.preDownloadNum)
|
||||
singlePagerScroller(
|
||||
AppConfig.singlePageScrolling,
|
||||
AppConfig.enableMangaHorizontalScroller
|
||||
AppConfig.singlePageScroll,
|
||||
AppConfig.enableMangaHorizontalScroll
|
||||
)
|
||||
disabledClickScroller(AppConfig.disableClickScroller)
|
||||
disableMangaScaling(AppConfig.disableMangaScaling)
|
||||
disabledClickScroller(AppConfig.disableClickScroll)
|
||||
disableMangaScaling(AppConfig.disableMangaScale)
|
||||
setPreScrollListener { _, dx, dy, position ->
|
||||
if ((dy > 0 || dx > 0) && position + 2 > mAdapter.getCurrentList().size - 3) {
|
||||
if (mAdapter.getCurrentList().last() is ReaderLoading) {
|
||||
@@ -487,19 +487,19 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
|
||||
R.id.menu_scroller_page -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.singlePageScrolling = item.isChecked
|
||||
singlePagerScroller(item.isChecked, AppConfig.enableMangaHorizontalScroller)
|
||||
AppConfig.singlePageScroll = item.isChecked
|
||||
singlePagerScroller(item.isChecked, AppConfig.enableMangaHorizontalScroll)
|
||||
}
|
||||
|
||||
R.id.menu_disable_manga_scaling -> {
|
||||
R.id.menu_disable_manga_scale -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.disableMangaScaling = item.isChecked
|
||||
AppConfig.disableMangaScale = item.isChecked
|
||||
disableMangaScaling(item.isChecked)
|
||||
}
|
||||
|
||||
R.id.menu_disable_click_scroller -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.disableClickScroller = item.isChecked
|
||||
AppConfig.disableClickScroll = item.isChecked
|
||||
disabledClickScroller(item.isChecked)
|
||||
}
|
||||
|
||||
@@ -532,10 +532,10 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
|
||||
R.id.menu_enable_horizontal_scroller -> {
|
||||
item.isChecked = !item.isChecked
|
||||
AppConfig.enableMangaHorizontalScroller = item.isChecked
|
||||
AppConfig.enableMangaHorizontalScroll = item.isChecked
|
||||
mLayoutManager.orientation =
|
||||
if (item.isChecked) LinearLayoutManager.HORIZONTAL else LinearLayoutManager.VERTICAL
|
||||
singlePagerScroller(AppConfig.singlePageScrolling, item.isChecked)
|
||||
singlePagerScroller(AppConfig.singlePageScroll, item.isChecked)
|
||||
mAdapter.isHorizontal = item.isChecked
|
||||
mAdapter.notifyItemRangeChanged(
|
||||
ReadManga.durChapterPos.minus(2),
|
||||
@@ -615,17 +615,17 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
|
||||
this.mMenu = menu
|
||||
menu.findItem(R.id.menu_pre_manga_number).title =
|
||||
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_scroller_page).isChecked = AppConfig.singlePageScroll
|
||||
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_manga_auto_page_speed).title =
|
||||
getString(R.string.manga_auto_page_speed, mMangaAutoPageSpeed)
|
||||
menu.findItem(R.id.menu_enable_horizontal_scroller).isChecked =
|
||||
AppConfig.enableMangaHorizontalScroller
|
||||
AppConfig.enableMangaHorizontalScroll
|
||||
}
|
||||
|
||||
private fun disableMangaScaling(disable: Boolean) {
|
||||
binding.webtoonFrame.disableMangaScaling = disable
|
||||
binding.webtoonFrame.disableMangaScale = disable
|
||||
binding.mRecyclerMange.disableMangaScaling = disable
|
||||
if (disable) {
|
||||
binding.mRecyclerMange.resetZoom()
|
||||
|
||||
@@ -28,13 +28,13 @@ class WebtoonFrame : FrameLayout {
|
||||
scaleDetector.isQuickScaleEnabled = value
|
||||
}
|
||||
|
||||
var disableMangaScaling = false
|
||||
var disableMangaScale = false
|
||||
|
||||
private val recycler: WebtoonRecyclerView?
|
||||
get() = getChildAt(0) as? WebtoonRecyclerView
|
||||
|
||||
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
|
||||
if (!disableMangaScaling) {
|
||||
if (!disableMangaScale) {
|
||||
scaleDetector.onTouchEvent(ev)
|
||||
flingDetector.onTouchEvent(ev)
|
||||
val recyclerRect = Rect()
|
||||
|
||||
@@ -65,8 +65,8 @@ class WebtoonRecyclerView @JvmOverloads constructor(
|
||||
super.onMeasure(widthSpec, heightSpec)
|
||||
}
|
||||
|
||||
override fun dispatchTouchEvent(ev: MotionEvent?): Boolean {
|
||||
detector.onTouchEvent(ev!!)
|
||||
override fun dispatchTouchEvent(ev: MotionEvent): Boolean {
|
||||
detector.onTouchEvent(ev)
|
||||
return super.dispatchTouchEvent(ev)
|
||||
}
|
||||
|
||||
|
||||
@@ -38,10 +38,8 @@ import io.legado.app.utils.shouldHideSoftInput
|
||||
import io.legado.app.utils.showSoftInput
|
||||
import io.legado.app.utils.viewbindingdelegate.viewBinding
|
||||
import io.legado.app.utils.visible
|
||||
import kotlinx.coroutines.Deferred
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.Job
|
||||
import kotlinx.coroutines.async
|
||||
import kotlinx.coroutines.ensureActive
|
||||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
@@ -60,7 +58,7 @@ class SearchContentActivity :
|
||||
}
|
||||
private var durChapterIndex = 0
|
||||
private var searchJob: Job? = null
|
||||
private var initJob: Deferred<*>? = null
|
||||
private var initJob: Job? = null
|
||||
|
||||
override fun onActivityCreated(savedInstanceState: Bundle?) {
|
||||
val bbg = bottomBackground
|
||||
@@ -183,7 +181,7 @@ class SearchContentActivity :
|
||||
}
|
||||
|
||||
private fun initCacheFileNames(book: Book) {
|
||||
initJob = lifecycleScope.async {
|
||||
initJob = lifecycleScope.launch {
|
||||
withContext(IO) {
|
||||
viewModel.cacheChapterNames.addAll(BookHelp.getChapterFiles(book))
|
||||
}
|
||||
@@ -214,7 +212,7 @@ class SearchContentActivity :
|
||||
binding.refreshProgressBar.isAutoLoading = true
|
||||
binding.fbStop.visible()
|
||||
searchJob = lifecycleScope.launch(IO) {
|
||||
initJob?.await()
|
||||
initJob?.join()
|
||||
kotlin.runCatching {
|
||||
appDb.bookChapterDao.getChapterList(viewModel.bookUrl).forEach { bookChapter ->
|
||||
ensureActive()
|
||||
|
||||
Reference in New Issue
Block a user