2016-01-26 30 views
0

我一直在尋找一些功能,可以給我我在屏幕上觸摸點的x,y座標。 我得到了onTouch()的代碼,但找不到調用該函數的方法。我可以獲得我點擊的位置的座標x y嗎? OnTapListener?

public boolean onTouch(View v, MotionEvent event) { 
    int x = event.getX(); 
    int y = event.getY(); 
    return true; 
} 

什麼是視圖和MotionEvent,我應該通過爭論? 任何人都可以請幫助我,告訴我如何獲得只是觸摸點的x,y?

回答

0

嘗試此一觀點:

View yourView = findViewById(R.id.yourViewId) 
    yourView.setOnTouchListener(new OnTouchListener() { 

     @Override 
     public boolean onTouch(View v, MotionEvent event) { 
      if(event.getActionMasked() == MotionEvent.ACTION_DOWN) { 
      // Do something 
      x = event.getX(); 
      y = event.getY(); 
      } 
      return true; 
     } 
    }); 

或嘗試此活動:

@Override 
public boolean onTouchEvent(MotionEvent event) { 
      if(event.getActionMasked() == MotionEvent.ACTION_DOWN) { 
      // Do something 
      x = event.getX(); 
      y = event.getY(); 
      } 
      return true; 
} 

順便說一句,你不需要調用這個方法,你只需將其覆蓋,並任何時候觸摸屏幕,這個方法都會被你的活動調用。

+0

試過了,但我仍然不能理解什麼是「事件」,我怎麼會在調用函數時在onTouchEvent()中傳遞「event」? – user5714576

+0

您不提供該事件,它是由Android觸控系統提供的。您只需確保在屏幕上有一個可以選取觸摸事件的視圖。 – ootinii

+0

正如我之前所說的,事件會使您的活動調用處理該事件的特定方法,默認情況下,您的活動具有onTouchEvent,您所需要的只是覆蓋它,如何獲得它? –

0

讓我知道,如果這也不行,我會刪除答案

要獲得當您按下嘗試爲座標:

switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: // when you touch 
     x = event.getRawX(); // gather x and y 
     y = event.getRawY(); 
     break; 

PS我想發表評論,但有太低代表 PSS你如果這是你想要做的,如果你試圖做多件事情,即拖動一個項目,則切換。

+0

只有當FarShaD回答不起作用時,我才發現他沒有任何問題,但如果因爲某種原因無法正常工作,請嘗試一下。 –

相關問題