mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 15:23:00 +00:00 
			
		
		
		
	Merge pull request #11075 from Isira-Seneviratne/Comment-touch-lambda
Convert comment touch listener to a lambda
This commit is contained in:
		| @@ -1,9 +1,13 @@ | |||||||
| package org.schabi.newpipe.info_list.holder; | package org.schabi.newpipe.info_list.holder; | ||||||
|  |  | ||||||
| import static org.schabi.newpipe.util.ServiceHelper.getServiceById; | import static org.schabi.newpipe.util.ServiceHelper.getServiceById; | ||||||
|  | import static org.schabi.newpipe.util.text.TouchUtils.getOffsetForHorizontalLine; | ||||||
|  |  | ||||||
|  | import android.text.Spanned; | ||||||
| import android.text.method.LinkMovementMethod; | import android.text.method.LinkMovementMethod; | ||||||
|  | import android.text.style.ClickableSpan; | ||||||
| import android.text.style.URLSpan; | import android.text.style.URLSpan; | ||||||
|  | import android.view.MotionEvent; | ||||||
| import android.view.View; | import android.view.View; | ||||||
| import android.view.ViewGroup; | import android.view.ViewGroup; | ||||||
| import android.widget.Button; | import android.widget.Button; | ||||||
| @@ -25,7 +29,6 @@ import org.schabi.newpipe.util.NavigationHelper; | |||||||
| import org.schabi.newpipe.util.external_communication.ShareUtils; | import org.schabi.newpipe.util.external_communication.ShareUtils; | ||||||
| import org.schabi.newpipe.util.image.ImageStrategy; | import org.schabi.newpipe.util.image.ImageStrategy; | ||||||
| import org.schabi.newpipe.util.image.PicassoHelper; | import org.schabi.newpipe.util.image.PicassoHelper; | ||||||
| import org.schabi.newpipe.util.text.CommentTextOnTouchListener; |  | ||||||
| import org.schabi.newpipe.util.text.TextEllipsizer; | import org.schabi.newpipe.util.text.TextEllipsizer; | ||||||
|  |  | ||||||
| public class CommentInfoItemHolder extends InfoItemHolder { | public class CommentInfoItemHolder extends InfoItemHolder { | ||||||
| @@ -128,7 +131,26 @@ public class CommentInfoItemHolder extends InfoItemHolder { | |||||||
|         textEllipsizer.ellipsize(); |         textEllipsizer.ellipsize(); | ||||||
|  |  | ||||||
|         //noinspection ClickableViewAccessibility |         //noinspection ClickableViewAccessibility | ||||||
|         itemContentView.setOnTouchListener(CommentTextOnTouchListener.INSTANCE); |         itemContentView.setOnTouchListener((v, event) -> { | ||||||
|  |             final CharSequence text = itemContentView.getText(); | ||||||
|  |             if (text instanceof Spanned buffer) { | ||||||
|  |                 final int action = event.getAction(); | ||||||
|  |  | ||||||
|  |                 if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { | ||||||
|  |                     final int offset = getOffsetForHorizontalLine(itemContentView, event); | ||||||
|  |                     final var links = buffer.getSpans(offset, offset, ClickableSpan.class); | ||||||
|  |  | ||||||
|  |                     if (links.length != 0) { | ||||||
|  |                         if (action == MotionEvent.ACTION_UP) { | ||||||
|  |                             links[0].onClick(itemContentView); | ||||||
|  |                         } | ||||||
|  |                         // we handle events that intersect links, so return true | ||||||
|  |                         return true; | ||||||
|  |                     } | ||||||
|  |                 } | ||||||
|  |             } | ||||||
|  |             return false; | ||||||
|  |         }); | ||||||
|  |  | ||||||
|         itemView.setOnClickListener(view -> { |         itemView.setOnClickListener(view -> { | ||||||
|             textEllipsizer.toggle(); |             textEllipsizer.toggle(); | ||||||
|   | |||||||
| @@ -1,42 +0,0 @@ | |||||||
| package org.schabi.newpipe.util.text; |  | ||||||
|  |  | ||||||
| import static org.schabi.newpipe.util.text.TouchUtils.getOffsetForHorizontalLine; |  | ||||||
|  |  | ||||||
| import android.annotation.SuppressLint; |  | ||||||
| import android.text.Spanned; |  | ||||||
| import android.text.style.ClickableSpan; |  | ||||||
| import android.view.MotionEvent; |  | ||||||
| import android.view.View; |  | ||||||
| import android.widget.TextView; |  | ||||||
|  |  | ||||||
| public class CommentTextOnTouchListener implements View.OnTouchListener { |  | ||||||
|     public static final CommentTextOnTouchListener INSTANCE = new CommentTextOnTouchListener(); |  | ||||||
|  |  | ||||||
|     @SuppressLint("ClickableViewAccessibility") |  | ||||||
|     @Override |  | ||||||
|     public boolean onTouch(final View v, final MotionEvent event) { |  | ||||||
|         if (!(v instanceof TextView)) { |  | ||||||
|             return false; |  | ||||||
|         } |  | ||||||
|         final TextView widget = (TextView) v; |  | ||||||
|         final CharSequence text = widget.getText(); |  | ||||||
|         if (text instanceof Spanned) { |  | ||||||
|             final Spanned buffer = (Spanned) text; |  | ||||||
|             final int action = event.getAction(); |  | ||||||
|  |  | ||||||
|             if (action == MotionEvent.ACTION_UP || action == MotionEvent.ACTION_DOWN) { |  | ||||||
|                 final int offset = getOffsetForHorizontalLine(widget, event); |  | ||||||
|                 final ClickableSpan[] links = buffer.getSpans(offset, offset, ClickableSpan.class); |  | ||||||
|  |  | ||||||
|                 if (links.length != 0) { |  | ||||||
|                     if (action == MotionEvent.ACTION_UP) { |  | ||||||
|                         links[0].onClick(widget); |  | ||||||
|                     } |  | ||||||
|                     // we handle events that intersect links, so return true |  | ||||||
|                     return true; |  | ||||||
|                 } |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
|         return false; |  | ||||||
|     } |  | ||||||
| } |  | ||||||
		Reference in New Issue
	
	Block a user
	 Isira Seneviratne
					Isira Seneviratne