我在画布上画了一个椭圆形:
RectF f = new RectF(-r, -r, r, r);
canvas.drawOval(f , mPaint);
为什么我在RectF上看到警告?
在绘制/布局操作期间避免对象分配(预分配 并重新使用)
答案 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对象。