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 72d260d8a..0d1e5ef7e 100644 --- a/app/src/main/java/io/legado/app/constant/PreferKey.kt +++ b/app/src/main/java/io/legado/app/constant/PreferKey.kt @@ -72,6 +72,7 @@ object PreferKey { const val exportCharset = "exportCharset" const val exportUseReplace = "exportUseReplace" const val useZhLayout = "useZhLayout" + const val fullScreenGesturesSupport = "fullScreenGesturesSupport" const val cPrimary = "colorPrimary" const val cAccent = "colorAccent" diff --git a/app/src/main/java/io/legado/app/help/AppConfig.kt b/app/src/main/java/io/legado/app/help/AppConfig.kt index c72078564..cda42eed4 100644 --- a/app/src/main/java/io/legado/app/help/AppConfig.kt +++ b/app/src/main/java/io/legado/app/help/AppConfig.kt @@ -190,6 +190,9 @@ object AppConfig : SharedPreferences.OnSharedPreferenceChangeListener { val replaceEnableDefault get() = appCtx.getPrefBoolean(PreferKey.replaceEnableDefault, true) + val fullScreenGesturesSupport: Boolean + get () = appCtx.getPrefBoolean(PreferKey.fullScreenGesturesSupport, false) + private fun getPrefUserAgent(): String { val ua = appCtx.getPrefString(PreferKey.userAgent) if (ua.isNullOrBlank()) { diff --git a/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt b/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt index 5e4b9cec6..3fe8ed971 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/config/MoreConfigDialog.kt @@ -16,6 +16,7 @@ import io.legado.app.help.ReadBookConfig import io.legado.app.lib.theme.ATH import io.legado.app.lib.theme.bottomBackground import io.legado.app.ui.book.read.ReadBookActivity +import io.legado.app.ui.book.read.page.ReadView import io.legado.app.utils.dp import io.legado.app.utils.getPrefBoolean import io.legado.app.utils.postEvent @@ -127,6 +128,9 @@ class MoreConfigDialog : DialogFragment() { "clickRegionalConfig" -> { (activity as? ReadBookActivity)?.showClickRegionalConfig() } + "fullScreenGesturesSupport" -> { + ((activity as? ReadBookActivity)?.findViewById(R.id.read_view) as ReadView).setRect9x() + } } return super.onPreferenceTreeClick(preference) } diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt index ef53ab14b..bba292427 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/ReadView.kt @@ -77,15 +77,15 @@ class ReadView(context: Context, attrs: AttributeSet) : private var firstCharIndex: Int = 0 val slopSquare by lazy { ViewConfiguration.get(context).scaledTouchSlop } - private val tlRect = RectF(0f, 0f, width * 0.33f, height * 0.33f) - private val tcRect = RectF(width * 0.33f, 0f, width * 0.66f, height * 0.33f) - private val trRect = RectF(width * 0.36f, 0f, width - 0f, height * 0.33f) - private val mlRect = RectF(0f, height * 0.33f, width * 0.33f, height * 0.66f) - private val mcRect = RectF(width * 0.33f, height * 0.33f, width * 0.66f, height * 0.66f) - private val mrRect = RectF(width * 0.66f, height * 0.33f, width - 0f, height * 0.66f) - private val blRect = RectF(0f, height * 0.66f, width * 0.33f, height - 0f) - private val bcRect = RectF(width * 0.33f, height * 0.66f, width * 0.66f, height - 0f) - private val brRect = RectF(width * 0.66f, height * 0.66f, width - 0f, height - 0f) + private val tlRect = RectF() + private val tcRect = RectF() + private val trRect = RectF() + private val mlRect = RectF() + private val mcRect = RectF() + private val mrRect = RectF() + private val blRect = RectF() + private val bcRect = RectF() + private val brRect = RectF() private val autoPageRect by lazy { Rect() } private val autoPagePint by lazy { Paint().apply { color = context.accentColor } } private val boundary by lazy { BreakIterator.getWordInstance(Locale.getDefault()) } @@ -99,19 +99,25 @@ class ReadView(context: Context, attrs: AttributeSet) : setWillNotDraw(false) upPageAnim() } + setRect9x() } - override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { - super.onSizeChanged(w, h, oldw, oldh) - tlRect.set(0f, 0f, width * 0.33f, height * 0.33f) + public fun setRect9x() { + val edge = if (AppConfig.fullScreenGesturesSupport) { 200f } else { 0f } + tlRect.set(0f + edge, 0f, width * 0.33f, height * 0.33f) tcRect.set(width * 0.33f, 0f, width * 0.66f, height * 0.33f) - trRect.set(width * 0.36f, 0f, width - 0f, height * 0.33f) - mlRect.set(0f, height * 0.33f, width * 0.33f, height * 0.66f) + trRect.set(width * 0.36f, 0f, width - 0f - edge, height * 0.33f) + mlRect.set(0f + edge, height * 0.33f, width * 0.33f, height * 0.66f) mcRect.set(width * 0.33f, height * 0.33f, width * 0.66f, height * 0.66f) - mrRect.set(width * 0.66f, height * 0.33f, width - 0f, height * 0.66f) - blRect.set(0f, height * 0.66f, width * 0.33f, height - 10f) - bcRect.set(width * 0.33f, height * 0.66f, width * 0.66f, height - 0f) - brRect.set(width * 0.66f, height * 0.66f, width - 0f, height - 0f) + mrRect.set(width * 0.66f, height * 0.33f, width - 0f - edge, height * 0.66f) + blRect.set(0f + edge, height * 0.66f, width * 0.33f, height - 10f - edge) + bcRect.set(width * 0.33f, height * 0.66f, width * 0.66f, height - 0f - edge) + brRect.set(width * 0.66f, height * 0.66f, width - 0f - edge, height - 0f - edge) + } + + override fun onSizeChanged(w: Int, h: Int, oldw: Int, oldh: Int) { + super.onSizeChanged(w, h, oldw, oldh) + setRect9x() prevPage.x = -w.toFloat() pageDelegate?.setViewSize(w, h) } diff --git a/app/src/main/res/values-zh-rHK/strings.xml b/app/src/main/res/values-zh-rHK/strings.xml index 295a29b37..ec507138c 100644 --- a/app/src/main/res/values-zh-rHK/strings.xml +++ b/app/src/main/res/values-zh-rHK/strings.xml @@ -680,6 +680,7 @@ 信息 切換佈局 + 全面屏手勢優化 主色調 diff --git a/app/src/main/res/values-zh-rTW/strings.xml b/app/src/main/res/values-zh-rTW/strings.xml index 245a0aeab..0b7551fc5 100644 --- a/app/src/main/res/values-zh-rTW/strings.xml +++ b/app/src/main/res/values-zh-rTW/strings.xml @@ -693,6 +693,7 @@ 訊息 切換布局 文章字重轉換 + 全面屏手勢優化 主色調 diff --git a/app/src/main/res/values-zh/strings.xml b/app/src/main/res/values-zh/strings.xml index 6ecebfe3e..0889ca112 100644 --- a/app/src/main/res/values-zh/strings.xml +++ b/app/src/main/res/values-zh/strings.xml @@ -693,6 +693,7 @@ 信息 切换布局 文章字重切换 + 全面屏手势优化 主色调 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 629f44767..da4faf74d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -694,6 +694,7 @@ Information Switch Layout Text font weight switching + Full screen gestures support Primary diff --git a/app/src/main/res/xml/pref_config_read.xml b/app/src/main/res/xml/pref_config_read.xml index 9f240fc63..6f4b6e440 100644 --- a/app/src/main/res/xml/pref_config_read.xml +++ b/app/src/main/res/xml/pref_config_read.xml @@ -103,6 +103,13 @@ app:iconSpaceReserved="false" app:isBottomBackground="true" /> + +