Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.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_Multithreading_Touch_Android Canvas - Fatal编程技术网

Android 如何用触觉捕捉交叉线的瞬间?

Android 如何用触觉捕捉交叉线的瞬间?,android,multithreading,touch,android-canvas,Android,Multithreading,Touch,Android Canvas,应用程序如下所示。我在屏幕上有一行字。我触摸屏幕并移动手指。当我的手指碰到这条线的时候——我想在交叉点的时候显示一条信息 守则: public boolean onTouch(View v, MotionEvent event) { int action = event.getAction() ; case MotionEvent.ACTION_DOWN: break; case Motio

应用程序如下所示。我在屏幕上有一行字。我触摸屏幕并移动手指。当我的手指碰到这条线的时候——我想在交叉点的时候显示一条信息

守则:

    public boolean onTouch(View v, MotionEvent event) {
        int action = event.getAction() ;
            case MotionEvent.ACTION_DOWN: 
                break;
            case MotionEvent.ACTION_MOVE:
                boolean isline = check_line(event.getX(),event.getY());
                if(isline){
                    //SHOW MESSAGE
                }
                break;
            case MotionEvent.ACTION_UP:   
                break;
            }
        return true;
    }
但该应用程序有时无法捕捉到手指在线的时刻。如果我移动缓慢,则消息总是出现。但是如果我移动快一点-没有消息

这条线的方程式是A*x+B*y+C=0

check_line是一个数学函数,它只把x和y放在这个方程中。因此,当方程满足时,它返回true,否则返回false

但我想把所有的案子都抓起来


怎么办?

要点击当前已点击的线路,请增加“触摸范围”


例如,您可以制作一个半径为一定的圆(其中心位于getX和getY中),并检查圆是否与直线相交。

要击中直线,您当前正好击中该直线,因此您应该增加“触摸范围”


例如,您可以制作一个半径为一定的圆(其中心位于getX和getY中),并检查圆是否与直线相交。

要击中直线,您当前正好击中该直线,因此您应该增加“触摸范围”


例如,您可以制作一个半径为一定的圆(其中心位于getX和getY中),并检查圆是否与直线相交。

要击中直线,您当前正好击中该直线,因此您应该增加“触摸范围”


例如,你可以做一个圆(其中心在getX和getY中)具有一定半径,并检查圆是否与直线相交。

如果你移动得快,那么你就无法得到移动的所有点,这就是你的方程式出错的原因

解决方案:

使用直线相交公式。。 对于“直线相交”,需要四个x-y值。您已经从第行获得了两个x-y值,第三个x-y值是当前触摸事件,第四个x-y值应该是最后一个触摸事件

int lastX;
int lastY;
int currentX;
int currentY;

case MotionEvent.ACTION_MOVE:
   currentX = event.getX();
   currentY = event.getY();

   //your line intersect code


   lastX = event.getX();
   lastY = event.getY();
break;
直线相交的某些链接:


如果你移动得很快,那么你就无法得到你移动的所有点,这就是你的方程式出错的原因

解决方案:

使用直线相交公式。。 对于“直线相交”,需要四个x-y值。您已经从第行获得了两个x-y值,第三个x-y值是当前触摸事件,第四个x-y值应该是最后一个触摸事件

int lastX;
int lastY;
int currentX;
int currentY;

case MotionEvent.ACTION_MOVE:
   currentX = event.getX();
   currentY = event.getY();

   //your line intersect code


   lastX = event.getX();
   lastY = event.getY();
break;
直线相交的某些链接:


如果你移动得很快,那么你就无法得到你移动的所有点,这就是你的方程式出错的原因

解决方案:

使用直线相交公式。。 对于“直线相交”,需要四个x-y值。您已经从第行获得了两个x-y值,第三个x-y值是当前触摸事件,第四个x-y值应该是最后一个触摸事件

int lastX;
int lastY;
int currentX;
int currentY;

case MotionEvent.ACTION_MOVE:
   currentX = event.getX();
   currentY = event.getY();

   //your line intersect code


   lastX = event.getX();
   lastY = event.getY();
break;
直线相交的某些链接:


如果你移动得很快,那么你就无法得到你移动的所有点,这就是你的方程式出错的原因

解决方案:

使用直线相交公式。。 对于“直线相交”,需要四个x-y值。您已经从第行获得了两个x-y值,第三个x-y值是当前触摸事件,第四个x-y值应该是最后一个触摸事件

int lastX;
int lastY;
int currentX;
int currentY;

case MotionEvent.ACTION_MOVE:
   currentX = event.getX();
   currentY = event.getY();

   //your line intersect code


   lastX = event.getX();
   lastY = event.getY();
break;
直线相交的某些链接: