2013-06-04 29 views
1

開始我可以觸摸的距離就好了觸摸的座標位置:Android的 - 獲取從0,0

event.getX(); 
event.getY(); 

但我想從0,0原點開始。

所以我可以觸摸屏幕上的任何地方,當我向上拖動手指時,它會以1爲增量增加Y,因爲我將手指向右拖動,X將以1的增量增加。Movement向左將X減少-1,向下移動將使Y減少-1。

有沒有一種數學方法來做到這一點,或更好地是一個類或功能?

任何指導將不勝感激!謝謝!

回答

3

只需使用:

event.getRawX(); 
event.getRawY(); 

導致屏幕座標
開始0,0(左上角)
width,height(右下角)
取決於設備,但我認爲那對你來說並不陌生;)

--- ---更新
我想我已經missunderstood你,對不起 ..

那就試試這個:

int saved_x = -1; 
int saved_y = -1; 

@Override 
public boolean onTouchEvent(MotionEvent event) 
{ 
    final int action = event.getAction(); 
    final int pointer_index = (action & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT; 
    int pid = event.getPointerId(pointer_index); 

    int x = (int)event.getX(); 
    int y = (int)event.getY(); 

    switch (action & MotionEvent.ACTION_MASK) 
    { 
     case MotionEvent.ACTION_DOWN: 
      saved_x = x; 
      saved_y = y; 
      break; 

     case MotionEvent.ACTION_MOVE: 
      int relative_x = x - saved_x; 
      int relative_y = y - saved_y; 

      //move right --> relative_x increases by 'm' pixels of movement 
      //move left --> relative_x decreases by 'm' pixels of movement 
      //move down --> relative_y increases by 'm' pixels of movement 
      //move up --> relative_y decreases by 'm' pixels of movement 

      //use it :D 
      break; 

     case MotionEvent.ACTION_UP: 
      saved_x = -1; //-1 indicates "no finger on screen" -- just a feature :) 
      saved_y = -1; //-1 indicates "no finger on screen" -- just a feature :) 
      break; 
    } 

    return true; 
} 

我希望這是你現在想要什麼:)

+0

但我希望我的「錨點」(0,0)從我觸摸的位置(ACTION_DOWN)開始,而不是從左上角開始。然後從我開始的那個點開始逐漸增加或減少。 –

+0

- 更新後 - – bricklore

+0

工作完美!非常感謝! –