Просмотр исходного кода

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

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

* 优化

* 增加开启自动翻页

* ...

* 修改命名

* ...

* ...
lhjgege 1 год назад
Родитель
Сommit
904933d864

+ 1 - 0
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"

+ 7 - 0
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)
+        }
 }
 

+ 75 - 10
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<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 - 0
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" />
+
+    <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>

+ 3 - 0
app/src/main/res/values-es-rES/strings.xml

@@ -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>

+ 3 - 0
app/src/main/res/values-ja-rJP/strings.xml

@@ -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>

+ 3 - 0
app/src/main/res/values-pt-rBR/strings.xml

@@ -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 - 0
app/src/main/res/values-vi/strings.xml

@@ -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>

+ 3 - 0
app/src/main/res/values-zh-rHK/strings.xml

@@ -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>

+ 3 - 0
app/src/main/res/values-zh-rTW/strings.xml

@@ -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 - 0
app/src/main/res/values-zh/strings.xml

@@ -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 - 0
app/src/main/res/values/strings.xml

@@ -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>