Android检测双指长按

标签 android ontouchlistener motionevent

我正在创建一个可以在图片上绘图的应用程序。绘图是通过 pictureView、带有位图的 Canvas 和 onTouchListener 实现的。 我想添加一个功能,当用两个手指 按下时,该功能将撤消最后一个操作。 我通过这样做实现了它:

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_UP ){
    //undo
}

而且我想在用两根手指 按下时撤消所有绘图操作。 我尝试过类似的方法,但它只会检测一次。

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN ){
    numberOfDown++;
        if(numberOfDown>100){
            //undo
        }
}

我怎样才能实现我想要的?

最佳答案

我不确定主手指或非主手指的 Action 索引是从零开始,因此您可能需要将这些 0 翻转为 1。

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN && event.getActionIndex()==0){
    mSecondFingerTimeDown = System.currentTimeMillis();
}

if(event.getActionMasked() == MotionEvent.ACTION_POINTER_UP && event.getActionIndex()==0 ){
    if ((System.currentTimeMillis()-mSecondFingerDownTime) >= LONG_PRESS_TIME_MILLIS)
        //long double-press action
    else
        //short double-press action
}

关于Android检测双指长按,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19773365/

相关文章:

android - 整个屏幕的onTouchListener

android - ScrollView 回到顶部

java - 格式化我的系统后未安装应用程序且未签署应用程序

java - 如何设置全屏OnTouchListener?

android - 如何让应用程序支持三星的弹出 View ?

android - OnTouchListener 是否比 OnClickListener 快?

android - 触摸时未注册运动事件 'MotionEvent.ACTION_MOVE'

java - Android MotionEvent指针索引困惑

android - 如何在第一次返回 true 后停止接收手势的 onTouchEvents

安卓 GPS 滞后