3

キャンバスに楕円を描きます。

RectF f = new RectF(-r, -r, r, r);
canvas.drawOval(f , mPaint);  

RectFに警告が表示されるのはなぜですか?

描画/レイアウト操作中のオブジェクトの割り当てを回避します(代わりに事前に割り当てて再利用します)

4

2 に答える 2

14

それはまさにそれが言っていることです:何かが描かれるたびにnew RectF内部を行うことはオブジェクトを作成します。onDrawこれは多くのオブジェクトになる可能性があります。単一を使用するだけRectFです:

RectF mRect = new RectF();

protected void onDraw(Canvas canvas) {
    mRect.set(-r, -r, r, r);
    canvas.drawOval(mRect, mPaint);
}

明確にするために、元のコードは論理的に正しいです。これは単なるパフォーマンスの向上です(重要なものですが)。

于 2012-11-22T20:16:47.690 に答える
2

RectFオブジェクトを一度作成し、描画するたびに再利用するだけです。そうしないと、パフォーマンスに影響を与える可能性のあるRectFオブジェクトが多すぎます。

于 2012-11-22T20:16:13.720 に答える