我在画布上画了一个椭圆:
RectF f = new RectF(-r, -r, r, r);
canvas.drawOval(f , mPaint);
为什么我在 RectF 上看到警告?
在绘制/布局操作期间避免对象分配(改为预分配和重用)
就像它所说的那样:每次绘制任何东西时,做一个new RectF
内部都会创建一个对象。onDraw
这可能是很多对象。只需使用一个RectF
:
RectF mRect = new RectF();
protected void onDraw(Canvas canvas) {
mRect.set(-r, -r, r, r);
canvas.drawOval(mRect, mPaint);
}
只是要清楚:您的原始代码在逻辑上是正确的。这只是一种性能改进(尽管很重要)。
只需创建一次 RectF 对象并在每次绘制时重复使用它,否则您将创建过多的 RectF 对象,这可能会影响性能。