Editing/Painting 在 Canvas 上查看结果 "immediately"

Editing/Painting on Canvas and see result "immediately"

我正在为 Android 编写分形生成器。

代码可在此处获得:

https://github.com/nmmmnu/MandelDroid

但是问题部分是这样的:

@Override
public void run() {
        if (!_holder.getSurface().isValid())
            continue;

        _canvas = _holder.lockCanvas();

        // generate fractal here, use this for write:
        while(...){
            int a = calcPixelColor();
            _paint.setARGB(0xFF, a, a, a);
            _canvas.drawPoint(x, y, _paint);
        }

        _holder.unlockCanvasAndPost(_canvas);

}

但是如果我这样做,当所有的分形都生成时,整个画面就会显示出来。我试过了,但结果很糟糕:

    if (++__counter > 10000){
        __counter = 0;

        _holder.unlockCanvasAndPost(_canvas);
        _canvas = _holder.lockCanvas();
    }

有什么简单的方法可以让像素一显示就显示 "painted"?

我做了很多可能在存储库中看到的更改,但主要是我从 canvas:

上绘图切换了
_canvas = _holder.lockCanvas();

某事"easier" - 在位图上绘图。

然后我实现了onDraw()如下:

protected void onDraw(Canvas canvas) {
       canvas.drawBitmap(_image, 0, 0, _paint2);
}

不时显示我做了:

    if (__counter++ > COUNTER_MAX){
        __counter = 0;

        this.postInvalidate();
    }

最后,当生成分形的线程完成时,我又添加了一个 invalidate

@Override
public void run() {
    // generate fractal here

    this.postInvalidate();
}