2011-09-22 30 views
0

我想知道如何获得准确,实时得到(x)和得到(y)值MotionEvent?正在发生的事情是,当我触摸屏幕上的特定区域时,我会告诉一个动作发生。 问题是,一旦我触摸屏幕并取下手指,它仍然认为我的手指位于相同的位置(因为这是我触摸的最后一个位置)。因此,当我有多个Down事件(用于多点触控)时,它会抛出所有内容。有没有办法重置X和Y值,所以当我放弃屏幕,他们回到0或空(或其他)?谢谢“现场”得到(x)和得到(Y)值(对于MotionEvents)****更新****

回答

0

只要抓住MotionEvent.ACTION_UP或ACTION_MOVE事件,根据动作何时需要发生(因为您希望它活着,您应该使用ACTION_MOVE事件)。您应该在发生ACTION_DOWN时处理设置外部变量,并在ACTION_MOVE或ACTION_UP上处理结果。

1

你所描述的不是问题。程序员负责跟踪触摸位置及其含义。如果您关心动作,则每次触摸时都需要跟踪上次触摸和当前触摸。我发现这样的作品很棒:

public int x=-1,y=-1,prevX=-1, prevY=-1; 

public boolean onTouch(View v, MotionEvent event) 
{ 
    prevX = x; 
    prevY = y;  
    int x = (int)event.getX(); 
    int y = (int)event.getY(); 

    switch(event.getAction()){ 
    case MotionEvent.ACTION_DOWN: 

     // there is no prev touch 
     prevX = -1; 
     prevY = -1; 

     // touch down code 

     break; 

    case MotionEvent.ACTION_MOVE: 
     // touch move code 
     break; 

    case MotionEvent.ACTION_UP: 
     // touch up code 
     break; 
    } 
    return true; 
}