2011-02-22 3 views
1

私は4つの同心円(レーダーエフェクト、もしあれば)を入れたいと思うRelativeLayoutを持っています。私はRelativeLayoutを隠して表示できるようにしたいので、CanvasとPaintを使ってRelativeLayoutに円を描画する方法を正確に知りたいと思います。誰かがどのように動作するかのライフサイクルを説明することができれば、それは非常に役に立ちます。今すぐ私は持っています:Android:基本的なサークルのアウトラインを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(); 

答えて

2

カスタムビューを作成しない場合は、setBackgroundDrawableを使用できます。例えば、PicturePictureDrawableを使用して:

// 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); 
+0

こんにちはティムは、私はこれを実装するが、何も私のRelativeLayoutに現れていない試してみました。私は使用したコードで元の投稿を編集しました。私が間違っていたことを特定できますか? – Rockmaninoff

+0

Nevermindはそれを稼働させました! – Rockmaninoff

+0

'setBackgroundDrawable'は非推奨です –

2

あなたがCustom Viewを作成し、View.draw(Canvas)メソッドをオーバーライドする必要があります。キャンバスパラメータを使用してレーダーエフェクトを描画できます。ビューは任意のレイアウトに配置できます。

関連する問題