From 1ce3c7c0c1e6e5ef8b8bc80cd0fa8f325d530329 Mon Sep 17 00:00:00 2001 From: kunfei Date: Fri, 21 Feb 2020 22:54:14 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../legado/app/ui/book/read/ReadBookActivity.kt | 7 +++++++ .../app/ui/book/read/page/ContentTextView.kt | 15 +++++++++++++++ .../legado/app/ui/book/read/page/ContentView.kt | 4 ++++ .../ui/book/read/page/delegate/PageDelegate.kt | 5 +++++ 4 files changed, 31 insertions(+) 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 248f2b5e5..b890d01e3 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 @@ -33,6 +33,7 @@ import io.legado.app.ui.book.read.config.* import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.BG_COLOR import io.legado.app.ui.book.read.config.BgTextConfigDialog.Companion.TEXT_COLOR import io.legado.app.ui.book.read.page.ChapterProvider +import io.legado.app.ui.book.read.page.ContentTextView import io.legado.app.ui.book.read.page.PageView import io.legado.app.ui.book.read.page.delegate.PageDelegate import io.legado.app.ui.book.read.page.entities.SelectPoint @@ -55,6 +56,7 @@ import org.jetbrains.anko.toast class ReadBookActivity : VMBaseActivity(R.layout.activity_book_read), View.OnTouchListener, PageView.CallBack, + ContentTextView.CallBack, ReadMenu.CallBack, ReadAloudDialog.CallBack, ChangeSourceDialog.CallBack, @@ -326,6 +328,11 @@ class ReadBookActivity : VMBaseActivity(R.layout.activity_boo return true } + override fun onCancelSelect() { + cursor_left.invisible() + cursor_right.invisible() + } + /** * 音量键翻页 */ 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 cf47dfdef..35e028297 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 @@ -166,4 +166,19 @@ class ContentTextView(context: Context, attrs: AttributeSet?) : View(context, at } } + fun cancelSelect() { + textPage?.let { textPage -> + textPage.textLines.forEach { textLine -> + textLine.textChars.forEach { + it.selected = false + } + } + invalidate() + } + + } + + interface CallBack { + fun onCancelSelect() + } } diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt b/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt index 4f6a0dad4..089a31bd6 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/ContentView.kt @@ -133,6 +133,10 @@ class ContentView : FrameLayout { content_text_view.selectEndMove(x, y) } + fun cancelSelect() { + content_text_view.cancelSelect() + } + fun scrollTo(pos: Int?) { if (pos != null) { content_text_view.post { diff --git a/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt b/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt index dc3b9dddd..abc953046 100644 --- a/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt +++ b/app/src/main/java/io/legado/app/ui/book/read/page/delegate/PageDelegate.kt @@ -71,6 +71,7 @@ abstract class PageDelegate(protected val pageView: PageView) : var isCancel = false var isRunning = false var isStarted = false + var isTextSelected = false open fun setStartPoint(x: Float, y: Float, invalidate: Boolean = true) { startX = x @@ -218,6 +219,9 @@ abstract class PageDelegate(protected val pageView: PageView) : * 按下 */ override fun onDown(e: MotionEvent): Boolean { + if (isTextSelected) { + curPage.cancelSelect() + } // abort() //是否移动 isMoved = false @@ -272,6 +276,7 @@ abstract class PageDelegate(protected val pageView: PageView) : override fun onLongPress(e: MotionEvent) { val textChar = curPage.selectText(e) textChar?.let { + isTextSelected = true pageView.callBack?.selectText(it) } }