2013-08-27 27 views
0

我有用画布绘制的圆形数组列表。一切都好。但是我需要在程序中改变圆的所有X,Y坐标。ArrayList的质量变化值

static ArrayList<Circle> mCircles; 

private static void createCircles() { 
    if (mCircles == null) { 
     mCircles = new ArrayList<Circle>(); 
    } 

    int rana = 66/(koeficient); 
    mCircles.add(new Circle(80, 200, rana)); 
} 

public static void AddCircle() { 
    int rana = 66/(koeficient); 

    mCircles.add(new Circle(80, 200, rana)); 
} 

private void Drawing(Canvas canvas) { 
    for (Circle c : mCircles) { 
     canvas.drawCircle(c.getCurrentX(), c.getCurrentY(), c.getRadius(), 
          mMalovani); 
    } 
} 

public static Circle findCircleClosestToTouchEvent(float x, float y) { 
    Circle c = mCircles.get(mCircles.size() - 1); 

    return c; 
} 

公共类环状延伸形状{

final float mRadius; 




public Circle(float x, float y, float r) { 
    super(x, y); 
    mRadius = r; 
} 

final float getRadius() { 
    return mRadius; 
} 

}

公共类形状延伸活动{

protected float mStartX = 0f; 
protected float mStartY = 0f; 
public float mCurrentX = 30f; 
public float mCurrentY = 30f; 
protected float mActionDownX;  
protected float mActionDownY;  
protected float mActionMoveOffsetX; 
protected float mActionMoveOffsetY; 



// x y coordinate of a move action 

public Shape (float x, float y) { 
    mStartX = x; 
    mStartY = y; 
    mCurrentX = x; 
    mCurrentY = y; 



} 








public void setStartX(float x) { mStartX = x; } 

public void setStartY(float y) { mStartY = y; } 

public float getCurrentX() { return mCurrentX; } 

public float getCurrentY() { return mCurrentY; } 







public void setCurrentX(float x) { mCurrentX = x; 

} 

public void setCurrentY(float y) { mCurrentY = y; } 

public void setActionMoveOffsetX(float x) { mActionMoveOffsetX = x; } 

public void setActionMoveOffsetY(float y) { mActionMoveOffsetY = y; } 

public float getActionMoveOffsetX() { return mActionMoveOffsetX; } 

public float getActionMoveOffsetY() { return mActionMoveOffsetY; } 

public void setActionDownX(float x) { mActionDownX = x; } 

public void setActionDownY(float y) { mActionDownY = y; } 

public float getActionDownX() { return mActionDownX; } 

public float getActionDownY() { return mActionDownY; } 





public void restoreStartPosition() { 
    mCurrentX = mStartX; 
    mCurrentY = mStartY; 
} 

}

回答

1

假设你有setCurrentXsetCurrentY与getter方法相反的方法,只是遍历圆圈列表。

private void changeCoordinates(List<Circle> circles, int x, int y){ 
     for(Circle c:circles){ 
      c.setCurrentX(x); 
      c.setCurrentY(y); 
     } 
    } 
+0

SetCurrentX,setCurrentY是返回Touchevent最后绘制圆的坐标的方法。但是我需要乘以二,来自ArrayList的所有X,Y坐标。我希望我能正确理解你的建议。 –

+0

@JosefJosef是'Circle'你自己的班还是来自第三方?发布代码圈子。 –

+0

是的,我添加了它。 –