用户触摸屏幕上显示LinearLayout
的{{1}}后,我想跟踪他们的手指移动,直到他们松开触摸。最重要的是,我希望找到用户手指在触摸过程中移动的距离。
这是我到目前为止所做的:
touchLayout
档案
.java
编辑我想找到距离而不是位移。在我想要的方式中,两点之间的曲线应该返回一个比相同两点之间的直线更大的值。
答案 0 :(得分:0)
您需要将先前的x和y值存储在类变量中,以便将它们与ACTION_MOVE中的新值进行比较。
touchLayout.setOnTouchListener(
new View.OnTouchListener()
{
private float lastX;
private float lastY;
private float total;
@Override
public boolean onTouch(View v, MotionEvent event)
{
if (event.getAction() == MotionEvent.ACTION_DOWN)
{
lastX = event.getX();
lastY = event.getY();
total = 0;
}
else if (event.getAction() == MotionEvent.ACTION_MOVE)
{
float x = event.getX();
float y = event.getY();
total += Math.sqrt(Math.pow(x - lastX, 2) + Math.pow(y - lastY, 2));
lastX = x;
lastY = y;
}
else if (event.getAction() == MotionEvent.ACTION_UP)
{
//Do whatever
}
return true;
}
});
答案 1 :(得分:0)
使用距离公式
double dist = Math.sqrt(Math.pow(xcoordc - xcoorda, 2) + Math.pow(ycoordc- ycoorda, 2));