From 00fede0b3b47af6dd0055a541acd00f1697f43c2 Mon Sep 17 00:00:00 2001 From: Horis <821938089@qq.com> Date: Mon, 31 Jul 2023 09:41:00 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/java/io/legado/app/App.kt | 3 ++ .../app/service/BaseReadAloudService.kt | 3 ++ .../app/ui/book/read/ReadBookActivity.kt | 4 +++ .../app/ui/book/read/page/ContentTextView.kt | 29 +++++++++++++++++++ 4 files changed, 39 insertions(+) diff --git a/app/src/main/java/io/legado/app/App.kt b/app/src/main/java/io/legado/app/App.kt index 8aac9763e..550162a56 100644 --- a/app/src/main/java/io/legado/app/App.kt +++ b/app/src/main/java/io/legado/app/App.kt @@ -136,6 +136,7 @@ class App : Application() { enableLights(false) enableVibration(false) setSound(null, null) + importance = NotificationManager.IMPORTANCE_LOW } val readAloudChannel = NotificationChannel( @@ -146,6 +147,7 @@ class App : Application() { enableLights(false) enableVibration(false) setSound(null, null) + importance = NotificationManager.IMPORTANCE_LOW } val webChannel = NotificationChannel( @@ -156,6 +158,7 @@ class App : Application() { enableLights(false) enableVibration(false) setSound(null, null) + importance = NotificationManager.IMPORTANCE_LOW } //向notification manager 提交channel diff --git a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt index afe41a479..92f6c218f 100644 --- a/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt +++ b/app/src/main/java/io/legado/app/service/BaseReadAloudService.kt @@ -398,6 +398,9 @@ abstract class BaseReadAloudService : BaseService(), .setContentIntent( activityPendingIntent("activity") ) + .setVibrate(null) + .setSound(null) + .setLights(0, 0, 0) builder.setLargeIcon(cover) if (pause) { builder.addAction( diff --git a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt index 962c7e39b..4534df8c6 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/ReadBookActivity.kt @@ -667,6 +667,10 @@ class ReadBookActivity : BaseReadBookActivity(), textActionMenu.dismiss() } + override fun onLongScreenshotTouchEvent(event: MotionEvent): Boolean { + return binding.readView.onTouchEvent(event) + } + /** * 显示文本操作菜单 */ diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt index 954144e19..2558c6e0d 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/ContentTextView.kt @@ -6,6 +6,7 @@ import android.graphics.Paint import android.graphics.RectF import android.os.Build import android.util.AttributeSet +import android.view.MotionEvent import android.view.View import io.legado.app.R import io.legado.app.constant.AppLog @@ -47,6 +48,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at var isMainView = false private var drawVisibleImageOnly = false private var cacheIncreased = false + private var longScreenshot = false private val increaseSize = 8 * 1024 * 1024 private val maxCacheSize = if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.N_MR1) { min(128 * 1024 * 1024, Runtime.getRuntime().maxMemory()) @@ -100,6 +102,9 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at override fun onDraw(canvas: Canvas) { super.onDraw(canvas) + if (longScreenshot) { + canvas.translate(0f, scrollY.toFloat()) + } canvas.clipRect(visibleRect) drawPage(canvas) drawVisibleImageOnly = false @@ -193,6 +198,7 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at canvas.drawRect(it.start, lineTop, it.end, lineBottom, selectedPaint) } } + is ImageColumn -> drawImage(canvas, textPage, textLine, it, lineTop, lineBottom) is ReviewColumn -> it.drawToCanvas(canvas, lineBase, textPaint.textSize) } @@ -267,6 +273,9 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at fun scroll(mOffset: Int) { if (mOffset == 0) return pageOffset += mOffset + if (longScreenshot) { + scrollY += -mOffset + } if (!pageFactory.hasPrev() && pageOffset > 0) { pageOffset = 0 } else if (!pageFactory.hasNext() @@ -659,6 +668,25 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at } } + override fun canScrollVertically(direction: Int): Boolean { + return callBack.isScroll && pageFactory.hasNext() + } + + override fun dispatchTouchEvent(event: MotionEvent): Boolean { + when (event.action) { + MotionEvent.ACTION_DOWN -> { + longScreenshot = true + scrollY = 0 + } + + MotionEvent.ACTION_UP -> { + longScreenshot = false + scrollY = 0 + } + } + return callBack.onLongScreenshotTouchEvent(event) + } + interface CallBack { val headerHeight: Int val pageFactory: TextPageFactory @@ -668,5 +696,6 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at fun upSelectedEnd(x: Float, y: Float) fun onImageLongPress(x: Float, y: Float, src: String) fun onCancelSelect() + fun onLongScreenshotTouchEvent(event: MotionEvent): Boolean } }