本文主要是介绍Android在onTouchEvent或setOnTouchListener中处理长按事件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
说明:
因为项目需要在控件上实现长按触发事件,所以使用的是setOnTouchListener。不过需要使用onTouchEvent的小伙伴下面的代码也是可以用的,主要参考了https://bbs.csdn.net/topics/390490472中的代码,改进抬起和其他操作的误触发。
代码:
package com.example.android_test;import java.util.Timer;
import java.util.TimerTask;import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import android.view.View;public class MyTextView extends View {private static boolean isLongClickModule = false;float startX = 0;float startY= 0;Timer timer = null;@Overridepublic boolean onTouchEvent(MotionEvent ev) {switch (ev.getAction()) {case MotionEvent.ACTION_DOWN:startX = ev.getX();startY = ev.getY();timer = new Timer();timer.schedule(new TimerTask() {@Overridepublic void run() {isLongClickModule = true;}}, 1000); // 按下时长设置break;case MotionEvent.ACTION_MOVE:double deltaX = Math.sqrt((ev.getX() - startX) * (ev.getX() - startX) + (ev.getY() - startY) * (ev.getY() - startY));if (deltaX > 20 && timer != null) { // 移动大于20像素timer.cancel();timer = null;}if(isLongClickModule){//添加你长按之后的方法//getDrawingXY();timer = null;}break;default:isLongClickModule = false;if ( timer != null) {timer.cancel();timer = null;}}return true;}}
这篇关于Android在onTouchEvent或setOnTouchListener中处理长按事件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!