安卓 RectF 警告

3

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

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

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

避免在绘制/布局操作期间进行对象分配(预先分配和重复使用)

2个回答

14

就是这样:在onDraw中执行new RectF会在每次绘制时创建一个对象。这可能会创建大量的对象。只需使用一个单独的RectF即可:

RectF mRect = new RectF();

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

只是为了明确:你原来的代码在逻辑上是正确的。这只是一种性能改进(尽管很重要)。


2

只需创建RectF对象一次,然后每次绘制时重复使用它,否则将创建过多的RectF对象,可能会影响性能。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接