Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.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中完成对动作的跟踪?_Android_Ontouchlistener_Motionevent - Fatal编程技术网

如何在android中完成对动作的跟踪?

如何在android中完成对动作的跟踪?,android,ontouchlistener,motionevent,Android,Ontouchlistener,Motionevent,如我所知,如果我的onTouch方法返回false,在初始操作结束后,它不会开始跟踪移动,如果我返回true,它会。但是我有一些情况需要停止从某个时刻开始跟踪运动。我如何做到这一点?当我的条件成立时,我试图返回false,但它继续遇到这种情况。如何取消或停止运动事件 这是我的拖放应用程序的代码,当X小于100时,我只想停止拖动。我怎样才能做到这一点 @Override public boolean onTouch(View v, MotionEvent event) {

如我所知,如果我的
onTouch
方法返回
false
,在初始操作结束后,它不会开始跟踪移动,如果我返回
true
,它会。但是我有一些情况需要停止从某个时刻开始跟踪运动。我如何做到这一点?当我的条件成立时,我试图返回false,但它继续遇到这种情况。如何取消或停止运动事件

这是我的拖放应用程序的代码,当X小于100时,我只想停止拖动。我怎样才能做到这一点

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

        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                imageTouchX = (int) event.getRawX() - (int) img.getX();
                imageTouchY = (int) event.getRawY() - (int) img.getY();
                break;
            case MotionEvent.ACTION_MOVE:
                int x_cord = (int) event.getRawX();
                int y_cord = (int) event.getRawY();

                img.setX(x_cord - imageTouchX);
                img.setY(y_cord - imageTouchY);

                if(img.getX() < 100){
                    return false;
                }
                break;
            default:
                break;
        }
        return true;
    }
@覆盖
公共布尔onTouch(视图v,运动事件){
开关(event.getAction()){
case MotionEvent.ACTION\u DOWN:
imageTouchX=(int)event.getRawX()-(int)img.getX();
imageTouchY=(int)event.getRawY()-(int)img.getY();
打破
case MotionEvent.ACTION\u移动:
int x_cord=(int)event.getRawX();
int y_cord=(int)event.getRawY();
img.setX(x_线-imageTouchX);
图像设置(y_线-图像触摸);
if(img.getX()<100){
返回false;
}
打破
违约:
打破
}
返回true;
}

提前感谢。

如果img在x位置100下,然后返回会怎么样?
一种方法是一起禁用touchevent,但是如何获得下一个touchevents呢?除非它将是另一个接收触摸事件的视图,无论如何,如果停止触摸事件,您将不会再接收任何触摸事件,如果这是您希望得到的,只需禁用此视图的触摸事件,您可以在选择时再次启用它,祝您好运!:)

更干净的方法是使用事件,但不进行任何更改,即如果(x_cord-imageTouchXyeah但当条件不成立时,我仍然能够继续拖动…我想更好的方法是从对象中删除ontouch侦听器,正如Ben Levi所说,但这仍然会带来一些问题,因为我想停止拖动,但当我再次触摸图像时,我想执行一些操作通过行动完成_down。。。