我在画布上画了一个椭圆形:
RectF f = new RectF(-r, -r, r, r);
canvas.drawOval(f , mPaint);
为什么我看到RectF上的警告?
避免在绘制/布局操作期间进行对象分配(预先分配和重复使用)
就是这样:在onDraw
中执行new RectF
会在每次绘制时创建一个对象。这可能会创建大量的对象。只需使用一个单独的RectF
即可:
RectF mRect = new RectF();
protected void onDraw(Canvas canvas) {
mRect.set(-r, -r, r, r);
canvas.drawOval(mRect, mPaint);
}
只是为了明确:你原来的代码在逻辑上是正确的。这只是一种性能改进(尽管很重要)。
只需创建RectF对象一次,然后每次绘制时重复使用它,否则将创建过多的RectF对象,可能会影响性能。