Мне нужно сделать анимацию холста в Android студии (используя Java), где мне нужно представить один круг в центре экрана, и мне нужно иметь несколько кругов, которые вращаются вокруг этого основного центра круг (аналогично тому, как планеты вращаются вокруг Солнца). Итак, моя проблема в том, как сделать анимацию, которая будет делать это - сделать один круг go вокруг другого круга с фиксированным центром? С помощью приведенного ниже кода я пытаюсь определить логи c для одного круга, и я бы использовал ту же / аналогичную логику c для анимации других кругов. Пожалуйста, поделитесь информацией, если вы знаете, как я могу решить эту проблему. Спасибо.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
screenDimensions = getDisplayDimensions();
mainCircleX = screenDimensions[0] / 2;
mainCircleY = screenDimensions[1] / 2;
mainRadius = screenDimensions[0] - (screenDimensions[0] * 0.9f);
circle1X = mainCircleX + mainRadius + (screenDimensions[0] - screenDimensions[0] * 0.95f);
circle1Y = mainCircleY;
bitmap = Bitmap.createBitmap(screenDimensions[0], screenDimensions[1], Bitmap.Config.ARGB_8888);
canvas = new Canvas(bitmap);
paint = new Paint();
imageView = findViewById(R.id.imageView);
imageView.setImageBitmap(bitmap);
timer = new Timer();
timer.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
renderFrame();
}
});
}
}, 200, 400);
}
private void renderFrame() {
paint.setColor(Color.YELLOW);
canvas.drawColor(Color.parseColor("#8D99A0"));
canvas.drawCircle(mainCircleX, mainCircleY, mainRadius, paint);
paint.reset();
paint.setColor(Color.parseColor("#CC4125"));
paint.setStrokeWidth(10f);
paint.setStyle(Paint.Style.STROKE);
canvas.drawCircle(circle1X, circle1Y, 40, paint);
/*Need logic here that will make the circle with circle1X and circle1Y center coordinates, go around the main circle*/
imageView.invalidate();
}
Я пытался повернуть холст (canvas.rotate ()), но это решает проблему только одним кружком. Кроме того, другие круги должны go в разных направлениях и на разных скоростях, поэтому вращение холста, вероятно, не сработает. Я довольно новичок в этом, поэтому любая помощь будет оценена. Спасибо.