Android 安卓:画一个基本的圆轮廓到一个相对的圆

Android 安卓:画一个基本的圆轮廓到一个相对的圆,android,canvas,android-layout,paint,Android,Canvas,Android Layout,Paint,我有一个相对论,我想包含4个同心圆,一个雷达效果,如果你愿意的话。我希望能够隐藏和显示RelativeLayout,因此我想知道如何准确地使用画布和绘画来绘制一个相对Layout的圆。如果有人能解释它的生命周期是如何工作的,那将是非常有帮助的。现在我有: setContentView(R.layout.applayout); myRelLayout = (RelativeLayout) findViewById(R.id.RLRadar); Canvas canvas = new Canvas(

我有一个相对论,我想包含4个同心圆,一个雷达效果,如果你愿意的话。我希望能够隐藏和显示RelativeLayout,因此我想知道如何准确地使用画布和绘画来绘制一个相对Layout的圆。如果有人能解释它的生命周期是如何工作的,那将是非常有帮助的。现在我有:

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();

您必须创建并重写该方法。然后可以使用canvas参数绘制雷达效果。然后可以将视图放置在任何布局中。

您必须创建一个视图并覆盖该方法。然后可以使用canvas参数绘制雷达效果。然后可以将视图放置在任何布局中。

如果不想创建自定义视图,可以使用。例如,使用a和a:


如果不想创建自定义视图,可以使用。例如,使用a和a:


嗨,蒂姆,我试着实现了这个,但在我的相亲照片中什么都没有出现。我用我使用的代码编辑了原始帖子。你能识别出我做错了什么吗?Setbackgrounddravable是不推荐的。蒂姆,我试着实现了这一点,但在我的相对论中什么都没有出现。我用我使用的代码编辑了原始帖子。你能确定我做错了什么吗?Setbackgrounddravable不推荐使用
// Create the picture.    
Picture picture = new Picture();
Canvas canvas = beginRecording(WIDTH, HEIGHT);
// Draw on the canvas.
picture.endRecording();

// Now set it as the background drawable.
PictureDrawable drawable = new PictureDrawable(picture);
relativeLayout = (RelativeLayout) findViewById(R.id.RLRadar);
relativeLayout.setBackgroundDrawable(drawable);