2014-01-18 96 views
0

我已經在arraylist中存儲了幾個路徑對象。我嘗試根據觸摸的座標x,y選擇正確的路徑對象,然後在畫布周圍移動路徑對象。選擇正確的路徑對象並將其移動

我現在可以選擇用戶的觸摸座標。 Android的路徑會移除contains方法,因此我不能使用.contains(x,y)來確定正確的路徑對象並將其移動。

此外,由於我的路徑對象不只是矩形對象,我也無法使用.computebounds。

這是我onTouch方法:在挑選含屏幕觸摸的X和Y從ArrayList中的路徑

@Override 
public boolean onTouchEvent(MotionEvent event) { 
    // TODO Auto-generated method stub 
     switch (event.getAction()) { 
     case MotionEvent.ACTION_DOWN: 
      // screen touch get x of the touch event 
      x = event.getX(); 
      // screen touch get y of the touch event 
      y = event.getY(); 

      break; 

     } 

     invalidate(); 

    return true; 
} 

現在我面臨的問題。我知道的唯一方法是.contains(x,y)在這種情況下不起作用。

+0

向我們展示一些代碼。你試過什麼了? –

+0

@Robin Dijkhof我已添加我的代碼。 – pancakeleh

回答

0

我會用保存在一個ArrayList中

@Override 
public boolean onTouchEvent(MotionEvent event) { 
// TODO Auto-generated method stub 
    switch (event.getAction()) { 
    case MotionEvent.ACTION_DOWN: 
     // screen touch point of the touch event 
     myPointArrayList.add(event.getX(), event.getY()); 



     break; 

    } 

    invalidate(); 

return true; 
} 

點您可以通過列表循環檢查位置。

for(int i = 0; i<myPointArrayList.size(); i++){ 
    if(myPointArrayList.get(i).getX() == myIntX && myPointArrayList.get(i).getY() == myIntY){ 
     doSomething(); 
    } 
} 

不幸的是,Android的點類不包含getX。這意味着我們需要創建自己的點類。

public class MyPoint{ 
    private float x; 
    private float y; 

    public MyPoint(float x, float y){ 
     this.x = x; 
     this.y = y; 
    } 

    public float getX(){ 
     return x; 
    } 
    public float getY(){ 
     return y; 
    } 
} 

也可以創建一個新點並進行比較。

for(int i = 0; i<myPointArrayList.size(); i++){ 
    if(myPointArrayList.get(i).equals(new PointF(myIntX, myIntY)){ 
     doSomething(); 
    } 
} 

我會去第二個選項,因爲它節省了一些時間。

+0

我試過了,但是我得到了這個錯誤「方法getX()未定義類型ArrayList 」 – pancakeleh

+0

請參閱編輯。 –