From e1e1916126c27d1aa0b84350e3c02cb53be2e7a8 Mon Sep 17 00:00:00 2001 From: LooKeR Date: Fri, 25 Feb 2022 11:04:41 +0530 Subject: [PATCH] Use new LinkMovementMethod() --- .../droidify/ui/adapters/AppDetailAdapter.kt | 4 +- .../widget/ClickableMovementMethod.kt | 67 ------------------- 2 files changed, 2 insertions(+), 69 deletions(-) delete mode 100644 src/main/kotlin/com/looker/droidify/widget/ClickableMovementMethod.kt diff --git a/src/main/kotlin/com/looker/droidify/ui/adapters/AppDetailAdapter.kt b/src/main/kotlin/com/looker/droidify/ui/adapters/AppDetailAdapter.kt index 4e8fe56b..a437df87 100644 --- a/src/main/kotlin/com/looker/droidify/ui/adapters/AppDetailAdapter.kt +++ b/src/main/kotlin/com/looker/droidify/ui/adapters/AppDetailAdapter.kt @@ -15,6 +15,7 @@ import android.net.Uri import android.os.Parcel import android.text.SpannableStringBuilder import android.text.format.DateFormat +import android.text.method.LinkMovementMethod import android.text.style.* import android.text.util.Linkify import android.view.Gravity @@ -60,7 +61,6 @@ import com.looker.droidify.utility.extension.text.formatSize import com.looker.droidify.utility.extension.text.nullIfEmpty import com.looker.droidify.utility.extension.text.trimAfter import com.looker.droidify.utility.extension.text.trimBefore -import com.looker.droidify.widget.ClickableMovementMethod import com.looker.droidify.widget.StableRecyclerAdapter import org.intellij.markdown.flavours.commonmark.CommonMarkFlavourDescriptor import org.intellij.markdown.html.HtmlGenerator @@ -419,7 +419,7 @@ class AppDetailAdapter(private val callbacks: Callbacks) : itemView as MaterialTextView itemView.setTextSizeScaled(15) itemView.resources.sizeScaled(16).let { itemView.setPadding(it, it, it, it) } - itemView.movementMethod = ClickableMovementMethod + itemView.movementMethod = LinkMovementMethod() itemView.layoutParams = RecyclerView.LayoutParams( RecyclerView.LayoutParams.MATCH_PARENT, RecyclerView.LayoutParams.WRAP_CONTENT diff --git a/src/main/kotlin/com/looker/droidify/widget/ClickableMovementMethod.kt b/src/main/kotlin/com/looker/droidify/widget/ClickableMovementMethod.kt deleted file mode 100644 index 8d48a5d5..00000000 --- a/src/main/kotlin/com/looker/droidify/widget/ClickableMovementMethod.kt +++ /dev/null @@ -1,67 +0,0 @@ -package com.looker.droidify.widget - -import android.text.Selection -import android.text.Spannable -import android.text.method.MovementMethod -import android.text.style.ClickableSpan -import android.view.KeyEvent -import android.view.MotionEvent -import android.widget.TextView - -object ClickableMovementMethod : MovementMethod { - override fun initialize(widget: TextView, text: Spannable) { - Selection.removeSelection(text) - } - - override fun onTouchEvent(widget: TextView, text: Spannable, event: MotionEvent): Boolean { - val action = event.action - val down = action == MotionEvent.ACTION_DOWN - val up = action == MotionEvent.ACTION_UP - return (down || up) && run { - val x = event.x.toInt() - widget.totalPaddingLeft + widget.scrollX - val y = event.y.toInt() - widget.totalPaddingTop + widget.scrollY - val layout = widget.layout - val line = layout.getLineForVertical(y) - val offset = layout.getOffsetForHorizontal(line, x.toFloat()) - val span = text.getSpans(offset, offset, ClickableSpan::class.java)?.firstOrNull() - if (span != null) { - if (down) { - Selection.setSelection(text, text.getSpanStart(span), text.getSpanEnd(span)) - } else { - span.onClick(widget) - } - true - } else { - Selection.removeSelection(text) - false - } - } - } - - override fun onKeyDown( - widget: TextView, - text: Spannable, - keyCode: Int, - event: KeyEvent, - ): Boolean = false - - override fun onKeyUp( - widget: TextView, - text: Spannable, - keyCode: Int, - event: KeyEvent, - ): Boolean = false - - override fun onKeyOther(view: TextView, text: Spannable, event: KeyEvent): Boolean = false - override fun onTakeFocus(widget: TextView, text: Spannable, direction: Int) = Unit - override fun onTrackballEvent(widget: TextView, text: Spannable, event: MotionEvent): Boolean = - false - - override fun onGenericMotionEvent( - widget: TextView, - text: Spannable, - event: MotionEvent, - ): Boolean = false - - override fun canSelectArbitrarily(): Boolean = false -}