From d065edd699bcf8c73335ff5e988551025706f90a Mon Sep 17 00:00:00 2001 From: lhjgege <1079947827@qq.com> Date: Wed, 19 Feb 2025 15:16:17 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=BC=80=E5=90=AF=E8=87=AA?= =?UTF-8?q?=E5=8A=A8=E7=BF=BB=E9=A1=B5=20(#4717)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * 增加点击屏幕下部分右边下一页,左部分上一页 * 优化 * 增加开启自动翻页 * ... * 修改命名 * ... * ... --- .../java/io/legado/app/constant/PreferKey.kt | 1 + .../io/legado/app/help/config/AppConfig.kt | 7 ++ .../app/ui/book/manga/ReadMangaActivity.kt | 85 ++++++++++++++++--- app/src/main/res/menu/book_manga.xml | 13 +++ app/src/main/res/values-es-rES/strings.xml | 3 + app/src/main/res/values-ja-rJP/strings.xml | 3 + app/src/main/res/values-pt-rBR/strings.xml | 3 + app/src/main/res/values-vi/strings.xml | 3 + app/src/main/res/values-zh-rHK/strings.xml | 3 + app/src/main/res/values-zh-rTW/strings.xml | 3 + app/src/main/res/values-zh/strings.xml | 3 + app/src/main/res/values/strings.xml | 3 + 12 files changed, 120 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/io/legado/app/constant/PreferKey.kt b/app/src/main/java/io/legado/app/constant/PreferKey.kt index 7ba82fb53..07c984c69 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -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" diff --git a/app/src/main/java/io/legado/app/help/config/AppConfig.kt b/app/src/main/java/io/legado/app/help/config/AppConfig.kt index 5f45e3e9e..7b557e622 100644 --- a/app/src/main/java/io/legado/app/help/config/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/config/AppConfig.kt @@ -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) + } } diff --git a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt index 62f9f0599..b69b64c81 100644 --- a/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/manga/ReadMangaActivity.kt @@ -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() } } } + 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? = null @@ -304,6 +321,7 @@ class ReadMangaActivity : VMBaseActivity() ReadManga.syncProgress({ progress -> sureNewProgress(progress) }) } } + startAutoPage() } override fun onPause() { @@ -320,6 +338,7 @@ class ReadMangaActivity : VMBaseActivity() } } networkChangedListener.unRegister() + stopAutoPage() } override fun loadComplete() { @@ -413,16 +432,15 @@ class ReadMangaActivity : VMBaseActivity() } 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() 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() @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() 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) + } + } } \ No newline at end of file diff --git a/app/src/main/res/menu/book_manga.xml b/app/src/main/res/menu/book_manga.xml index 012befb07..e59962f9d 100644 --- a/app/src/main/res/menu/book_manga.xml +++ b/app/src/main/res/menu/book_manga.xml @@ -44,4 +44,17 @@ android:checked="false" android:title="@string/disable_manga_click_scroller" app:showAsAction="never" /> + + + + diff --git a/app/src/main/res/values-es-rES/strings.xml b/app/src/main/res/values-es-rES/strings.xml index 4dd8a8669..aff6e7956 100644 --- a/app/src/main/res/values-es-rES/strings.xml +++ b/app/src/main/res/values-es-rES/strings.xml @@ -1185,6 +1185,9 @@ 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% Descargar el siguiente capítulo Descargar todos los capítulos diff --git a/app/src/main/res/values-ja-rJP/strings.xml b/app/src/main/res/values-ja-rJP/strings.xml index cd07b0dc3..9bf7dc048 100644 --- a/app/src/main/res/values-ja-rJP/strings.xml +++ b/app/src/main/res/values-ja-rJP/strings.xml @@ -1188,6 +1188,9 @@ 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% 下载之后章节 下载全部章节 diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 50f99a5a0..0fceeadbe 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -1188,6 +1188,9 @@ 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% Faça o download do próximo capítulo Download de todos os capítulos diff --git a/app/src/main/res/values-vi/strings.xml b/app/src/main/res/values-vi/strings.xml index 54f9d56ad..02fa306d8 100644 --- a/app/src/main/res/values-vi/strings.xml +++ b/app/src/main/res/values-vi/strings.xml @@ -1184,6 +1184,9 @@ Còn 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% Tải xuống chương tiếp theo Tải xuống tất cả các chương diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 3e4f9b566..414bd4fff 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -1185,6 +1185,9 @@ 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% 下載之後章節 下載全部章節 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index a07846657..d37101bbe 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -1187,6 +1187,9 @@ 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% 下載之後章節 下載全部章節 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index ce790d57f..37e3ab3d6 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -1187,6 +1187,9 @@ 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% 下载之后章节 下载全部章节 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 7964f7473..1ac4ed73d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1188,6 +1188,9 @@ 漫画浏览 禁用漫画缩放 禁用点击翻页 + 开启自动翻页 + 翻页速度 %s 秒 + 设置自动翻页速度 页数. %1$d/%2$d 章节. %3$d/%4$d -> %5$s%% Download the chapter after Download all chapter