我有一项任务。这是绘制一些(多个)圆圈在屏幕上移动。他们必须在点击它们后开始移动。我的代码只有一个圆圈。告诉我如何执行此任务的方式,例如,5个圆圈。提前谢谢!
public class MainActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));
}
class MyView extends View {
//public Paint c;
public Paint p;
private static final int RADIUS = 46;
private int centerX;
private int centerY;
private int speedX = 50;
private int speedY = 40;
//private Paint paint; // Создай его где-нибудь там в конструкторе
public MyView(Context context) {
super(context);
p = new Paint();
p.setColor(Color.GREEN);
}
@Override
protected void onSizeChanged(int w, int h, int oldW, int oldH) {
centerX = w / 2;
centerY = h / 2;
}
protected void onDraw(Canvas c) {
int w = getWidth();
int h = getHeight();
centerX += speedX;
centerY += speedY;
int rightLimit = w - RADIUS;
int bottomLimit = h - RADIUS;
if (centerX >= rightLimit) {
centerX = rightLimit;
speedX *= -1;
}
if (centerX <= RADIUS) {
centerX = RADIUS;
speedX *= -1;
}
if (centerY >= bottomLimit) {
centerY = bottomLimit;
speedY *= -1;
}
if (centerY <= RADIUS) {
centerY = RADIUS;
speedY *= -1;
}
c.drawCircle(centerX, centerY, RADIUS, p);
postInvalidateDelayed(200);
}
}
}
答案 0 :(得分:1)
你必须改变这一部分:
private int centerX;
private int centerY;
private int speedX = 50;
private int speedY = 40;
并将其转换为
class Circle {
private int centerX;
private int centerY;
private int speedX = 50;
private int speedY = 40;
// add constructor here and other things
};
然后制作圈子的集合:ArrayList<Circle> circles
,然后代替
centerX += speedX;
centerY += speedY;
int rightLimit = w - RADIUS;
int bottomLimit = h - RADIUS;
if (centerX >= rightLimit) {
centerX = rightLimit;
speedX *= -1;
}
if (centerX <= RADIUS) {
centerX = RADIUS;
speedX *= -1;
}
if (centerY >= bottomLimit) {
centerY = bottomLimit;
speedY *= -1;
}
if (centerY <= RADIUS) {
centerY = RADIUS;
speedY *= -1;
}
你必须为每个圈子做这件事,比如
for( i=0; i<circles.size(); i++) {
circles[i].centerX += circles[i].speedX;
circles[i].centerY += circles[i].speedY;
// и так далее...
}
答案 1 :(得分:0)
您需要使用不同的centerx,centerY,Radius和p
调用绘制圆圈5次