У меня есть RelativeLayout, который я хочу содержать 4 концентрических круга (эффект радара, если хотите). Я хотел бы иметь возможность скрывать и отображать RelativeLayout, поэтому мне интересно, как именно использовать Canvas и Paint, чтобы нарисовать круг для RelativeLayout. Если бы кто-то мог объяснить жизненный цикл того, как это работает, это было бы очень полезно. Прямо сейчас у меня есть:
setContentView(R.layout.applayout);
myRelLayout = (RelativeLayout) findViewById(R.id.RLRadar);
Canvas canvas = new Canvas();
Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setColor(0xFF000000);
circlePaint.setStyle(Style.STROKE);
canvas.drawCircle((float) centerX, (float) centerY, (float) (maxRadius / 4), circlePaint);
Я на правильном пути? Нужно ли конвертировать холст в какой-то вид ImageView и добавить его в RelativeLayout? Или я здесь совсем не в базе?
Спасибо за любую помощь!
Редактировать: вот рабочий код.
// Add the radar to the RadarRL
Picture picture = new Picture();
Canvas canvas = picture.beginRecording(screenWidth, screenHeight);
// Draw on the canvas
Paint circlePaint = new Paint(Paint.ANTI_ALIAS_FLAG);
circlePaint.setColor(0xFF000000);
circlePaint.setStyle(Style.STROKE);
circlePaint.setStrokeWidth((float) 5.0);
canvas.drawCircle((float) centerX, (float) centerY, (float) (maxRadius / 4), circlePaint);
canvas.drawCircle((float) centerX, (float) centerY, (float) ((3 * maxRadius) / 4), circlePaint);
canvas.drawCircle((float) centerX, (float) centerY, (float) (maxRadius / 2), circlePaint);
canvas.drawCircle((float) centerX, (float) centerY, (float) (maxRadius), circlePaint);
picture.endRecording();