2012-12-31 85 views
4

使用myObject.performClick()我可以模擬代碼中的點擊事件。如何從代碼執行onTouch事件?

請問像這樣的onTouch事件存在嗎?我可以模仿Java代碼中的觸摸操作嗎?

編輯

這是我onTouch聽衆。

myObject.setOnTouchListener(new View.OnTouchListener() { 
     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      // do something 
      return false; 
     } 
    }); 

回答

13

這應該工作,發現這裏:How to simulate a touch event in Android?

// Obtain MotionEvent object 
long downTime = SystemClock.uptimeMillis(); 
long eventTime = SystemClock.uptimeMillis() + 100; 
float x = 0.0f; 
float y = 0.0f; 
// List of meta states found here: developer.android.com/reference/android/view/KeyEvent.html#getMetaState() 
int metaState = 0; 
MotionEvent motionEvent = MotionEvent.obtain(
    downTime, 
    eventTime, 
    MotionEvent.ACTION_UP, 
    x, 
    y, 
    metaState 
); 

// Dispatch touch event to view 
view.dispatchTouchEvent(motionEvent); 

更多關於獲得MotionEvent對象,這裏是一個很好的答案:Android: How to create a MotionEvent?

編輯:和獲得的位置您的看法,對於xy座標,請使用:

int[] coords = new int[2]; 
myView.getLocationOnScreen(coords); 
int x = coords[0]; 
int y = coords[1]; 
+0

嘿,這太好了。我會試試這個。 – sandalone