Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android:在MotionEvent.ACTION\u移动时长按按钮_Android_Button_Ontouchlistener_Motionevent - Fatal编程技术网

Android:在MotionEvent.ACTION\u移动时长按按钮

Android:在MotionEvent.ACTION\u移动时长按按钮,android,button,ontouchlistener,motionevent,Android,Button,Ontouchlistener,Motionevent,好的。。。在我的应用程序中,我更新MotionEvent.ACTION_上的布局,然后检查运动事件坐标以找到我的按钮。当手指按不同的按钮时,我可以举杯祝酒。问题是我需要长时间触摸按钮才能调用另一个操作,而不会与MotionEvent.action\u UP冲突。实现了一个长单击处理程序,但由于我没有“单击”,它无法工作。希望你们能理解我的问题 让我的应用程序按预期运行的最佳方式是什么 我的类实现了OnTouchListener、OnTestureListener @Override pu

好的。。。在我的应用程序中,我更新MotionEvent.ACTION_上的布局,然后检查运动事件坐标以找到我的按钮。当手指按不同的按钮时,我可以举杯祝酒。问题是我需要长时间触摸按钮才能调用另一个操作,而不会与MotionEvent.action\u UP冲突。实现了一个长单击处理程序,但由于我没有“单击”,它无法工作。希望你们能理解我的问题

让我的应用程序按预期运行的最佳方式是什么

我的类实现了OnTouchListener、OnTestureListener

    @Override
public boolean onTouch(View v, MotionEvent event) {

    switch(event.getAction()){

    case MotionEvent.ACTION_DOWN:

        // UPDATE LAYOUT
            break;

        case MotionEvent.ACTION_UP:

        // GET BUTTON X Y           
            if (x and y match the button location){

                // DO ACTION

            }else{   

                // DO NOTHING

            }           
            // CHANGE LAYOUT TO INITIAL STATE   
            break;

        case MotionEvent.ACTION_MOVE:
            break;

    }

        return false;


     mybutton.setOnLongClickListener(new OnLongClickListener() {

        @Override
        public boolean onLongClick(View v) {
                // DO STUFF
            return true;
        }
    });

}

只要试着在你的
onTouch(…)
方法中返回
false
,然后像往常一样使用
onLongClickListener(…)

我想这就是我尝试过的。。。更新了代码。我需要从移动事件中直接进行长时间的触摸,而无需抬起手指再次触摸,因为我的布局将在motionEvent\u UP之后切换回正常状态。那么,您需要在onTouchEvent()中添加一些计时器,然后开始操作\u DOWN-这样您就可以实现自己的onLongClickListener(…)但别忘了定期检查手指的位置,就像我对按钮位置的检查一样,我想。。。当到达按钮区域时,是否有一种方法可以消除持续的x y更新。它会多次触发事件,因为它非常敏感。当我检测到我的长触摸计时器时,如何避免触发up事件。。。我猜这两个动作都会在动作事件发生时触发。你们在动作发生时执行定时器,所以当你们按下按钮时它只会触发一次,之后你们在做什么并不重要。