选择正确的路径对象并移动它

时间:2014-01-18 18:37:45

标签: android object arraylist path

我在arraylist中存储了一些路径对象。我在尝试根据触摸的坐标x,y选择正确的路径对象时遇到问题,然后在画布周围移动路径对象。

我现在可以选择用户的触摸坐标。 Android的路径删除了contains方法,因此我不能使用.contains(x,y)来确定正确的路径对象并移动它。

此外,由于我的路径对象不仅仅是矩形对象,我也不能使用.computebounds。

这是我的onTouch方法:

 @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;
 }

现在,我正在挑选从arraylist中选择包含屏幕触摸x和y的路径的问题。我所知道的唯一方法是.contains(x,y)在这种情况下不起作用。

1 个答案:

答案 0 :(得分: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();
    }
}

我会选择第二种选择,因为它可以节省一些时间。