gpt4 book ai didi

java - 在android中移动圆圈

转载 作者:行者123 更新时间:2023-11-30 03:56:01 26 4
gpt4 key购买 nike

我有一个任务。就是画一些(不止一个)圆圈在屏幕上移动。单击它们后,它们必须开始移动。我只有一个圈子的代码。给我如何完成这个任务的方法,例如,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);
}
}
}

最佳答案

你必须改变这部分:

  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;

// и так далее...

关于java - 在android中移动圆圈,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13360021/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com