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