增加开启自动翻页 (#4717)

* 增加点击屏幕下部分右边下一页,左部分上一页

* 优化

* 增加开启自动翻页

* ...

* 修改命名

* ...

* ...
This commit is contained in:
lhjgege
2025-02-19 15:16:17 +08:00
committed by GitHub
parent 9a45ab6b73
commit d065edd699
12 changed files with 120 additions and 10 deletions
@@ -96,6 +96,7 @@ object PreferKey {
const val imageRetainNum = "imageRetainNum"
const val preDownloadNum = "preDownloadNum"
const val mangaPreDownloadNum = "mangaPreDownloadNum"
const val mangaAutoPageSpeed = "mangaAutoPageSpeed"
const val singlePageScrolling = "singlePageScrolling"
const val disableClickScroller = "disableClickScroller"
const val autoRefresh = "auto_refresh"
@@ -636,5 +636,12 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener {
set(value) {
appCtx.putPrefBoolean(PreferKey.disableClickScroller, value)
}
//漫画滚动速度
var mangaAutoPageSpeed
get() = appCtx.getPrefInt(PreferKey.mangaAutoPageSpeed, 3)
set(value) {
appCtx.putPrefInt(PreferKey.mangaAutoPageSpeed, value)
}
}
@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.view.KeyEvent
import android.view.Menu
@@ -109,6 +110,22 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
}
}
}
private var mDisableAutoScrollPage = false
private val mInitMangaAutoPageSpeed by lazy {
AppConfig.mangaAutoPageSpeed
}
private var mMangaAutoPageSpeed = mInitMangaAutoPageSpeed
private val autoScrollHandler = Handler(Looper.getMainLooper())
private val autoScrollRunnable = object : Runnable {
override fun run() {
scrollToNext()
autoScrollHandler.postDelayed(this, mMangaAutoPageSpeed.times(1000L)) // 每3秒滑动一次
}
}
private var mMenu: Menu? = null
private var mRecyclerViewPreloader: RecyclerViewPreloader<Any>? = null
@@ -304,6 +321,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
ReadManga.syncProgress({ progress -> sureNewProgress(progress) })
}
}
startAutoPage()
}
override fun onPause() {
@@ -320,6 +338,7 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
}
}
networkChangedListener.unRegister()
stopAutoPage()
}
override fun loadComplete() {
@@ -413,16 +432,15 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
}
R.id.menu_pre_manga_number -> {
NumberPickerDialog(this)
.setTitle(getString(R.string.pre_download))
.setMaxValue(9999)
.setMinValue(0)
.setValue(AppConfig.mangaPreDownloadNum)
.show {
AppConfig.mangaPreDownloadNum = it
item.title = getString(R.string.pre_download_m, it)
addRecyclerViewPreloader(it)
}
showNumberPickerDialog(
0,
getString(R.string.pre_download),
AppConfig.mangaPreDownloadNum
) {
AppConfig.mangaPreDownloadNum = it
item.title = getString(R.string.pre_download_m, it)
addRecyclerViewPreloader(it)
}
}
R.id.menu_scroller_page -> {
@@ -442,6 +460,29 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
AppConfig.disableClickScroller = item.isChecked
disabledClickScroller(item.isChecked)
}
R.id.menu_enable_auto_page -> {
item.isChecked = !item.isChecked
val menuMangaAutoPageSpeed = mMenu?.findItem(R.id.menu_manga_auto_page_speed)
mDisableAutoScrollPage = item.isChecked
if (item.isChecked) {
startAutoPage()
menuMangaAutoPageSpeed?.isVisible = true
} else {
stopAutoPage()
menuMangaAutoPageSpeed?.isVisible = false
}
}
R.id.menu_manga_auto_page_speed -> {
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)
stopAutoPage()
startAutoPage()
}
}
}
return super.onCompatOptionsItemSelected(item)
}
@@ -497,11 +538,14 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
@SuppressLint("StringFormatMatches")
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
menu.findItem(R.id.menu_manga_auto_page_speed).title =
getString(R.string.manga_auto_page_speed, mMangaAutoPageSpeed)
}
private fun disableMangaScaling(disable: Boolean) {
@@ -556,4 +600,25 @@ class ReadMangaActivity : VMBaseActivity<ActivityMangaBinding, MangaViewModel>()
mSmoothScroller.targetPosition = position
mLayoutManager.startSmoothScroll(mSmoothScroller)
}
private fun startAutoPage() {
if (mDisableAutoScrollPage) {
autoScrollHandler.postDelayed(autoScrollRunnable, mMangaAutoPageSpeed.times(1000L))
}
}
private fun stopAutoPage() {
autoScrollHandler.removeCallbacks(autoScrollRunnable)
}
private fun showNumberPickerDialog(min:Int,title: String, initValue: Int, callback: (Int) -> Unit) {
NumberPickerDialog(this)
.setTitle(title)
.setMaxValue(9999)
.setMinValue(min)
.setValue(initValue)
.show {
callback.invoke(it)
}
}
}
+13
View File
@@ -44,4 +44,17 @@
android:checked="false"
android:title="@string/disable_manga_click_scroller"
app:showAsAction="never" />
<item
android:id="@+id/menu_enable_auto_page"
android:checkable="true"
android:checked="false"
android:title="@string/enable_auto_page_scroller"
app:showAsAction="never" />
<item
android:id="@+id/menu_manga_auto_page_speed"
android:visible="false"
android:title="@string/manga_auto_page_speed"
app:showAsAction="never" />
</menu>
@@ -1185,6 +1185,9 @@
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">Descargar el siguiente capítulo</string>
<string name="menu_download_all">Descargar todos los capítulos</string>
@@ -1188,6 +1188,9 @@
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">下载之后章节</string>
<string name="menu_download_all">下载全部章节</string>
@@ -1188,6 +1188,9 @@
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">Faça o download do próximo capítulo</string>
<string name="menu_download_all">Download de todos os capítulos</string>
+3
View File
@@ -1184,6 +1184,9 @@ Còn </string>
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">Tải xuống chương tiếp theo</string>
<string name="menu_download_all">Tải xuống tất cả các chương</string>
@@ -1185,6 +1185,9 @@
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">下載之後章節</string>
<string name="menu_download_all">下載全部章節</string>
@@ -1187,6 +1187,9 @@
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">下載之後章節</string>
<string name="menu_download_all">下載全部章節</string>
+3
View File
@@ -1187,6 +1187,9 @@
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">下载之后章节</string>
<string name="menu_download_all">下载全部章节</string>
+3
View File
@@ -1188,6 +1188,9 @@
<string name="show_mange_ui">漫画浏览</string>
<string name="disable_manga_scaling">禁用漫画缩放</string>
<string name="disable_manga_click_scroller">禁用点击翻页</string>
<string name="enable_auto_page_scroller">开启自动翻页</string>
<string name="manga_auto_page_speed">翻页速度 %s 秒</string>
<string name="setting_manga_auto_page_speed">设置自动翻页速度</string>
<string name="book_reader_info_bar">页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%%</string>
<string name="menu_download_after">Download the chapter after</string>
<string name="menu_download_all">Download all chapter</string>