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;
直线相交的某些链接: