android rectF警告

时间:2012-11-22 20:12:10

标签: android draw rect

我在画布上画了一个椭圆形:

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

为什么我在RectF上看到警告?

  

在绘制/布局操作期间避免对象分配(预分配   并重新使用)

2 个答案:

答案 0 :(得分:14)

它的含义正是如此:在每次绘制任何内容时,在new RectF内进行onDraw会创建一个对象。这可能是很多对象。只需使用一个RectF

RectF mRect = new RectF();

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

请注意:您的原始代码在逻辑上是正确的。这只是性能提升(尽管很重要)。

答案 1 :(得分:2)

只需创建一次RectF对象并在每次绘制时重复使用,否则会产生太多可能影响性能的RectF对象。