如何优化我在画布上绘制的代码

时间:2013-01-03 11:58:05

标签: android canvas

在我的Android应用程序中,我绘制了大量的矩形,直线和放大器弧 经常改变用户行为。

现在我所做的是在onDraw()方法中创建了Paint对象 这样它们仍然是局部变量而不会引起任何内存问题。

但在代码审查期间,这被指出是一个错误。 我被告知这可能会减慢画布上的绘图速度,因为每次都会调用new() onDraw()被调用。所以我被要求将Paint对象作为类变量,只将它们初始化一次,只在onDraw()中更改它们的属性,并在屏幕关闭/销毁时进一步使它们无效。

我想问一下,这是正确的做法,或者事情比现在更好,因为我没有在屏幕上发现UI慢,我怀疑这可能是一个不必要的改变。

请提供建议。

2 个答案:

答案 0 :(得分:2)

我发现在Paint paint = new Paint();处理过程中onDraw()存在延迟。我现在使paint成为一个类变量,并在onDraw()中简单地修改已经构造的Paint变量的属性。

    public void onDraw(Canvas canvas) {
        mPaint.setColor(Color.BLUE);
        ...
        mPaint.setStyle(Style.FILL); 
        ...
    }

答案 1 :(得分:1)

是的,您应该使用Paint作为类成员。 Paint的大小可能很小,不是我已经检查过的,但它只是一个设置容器。

在Draw中分配任何对象是一个坏主意,因为它可能导致GC启动并导致非常明显的故障,尤其是在较旧的设备上。