在SurfaceView上绘图时图纸闪烁

时间:2014-06-05 05:03:20

标签: android surfaceview flicker

我无法解决表面视图上的闪烁问题。我在SurfaceView上绘制绘图,就像在FingerPaint项目上一样。但是,SurfaceView上的双缓冲会导致视图闪烁。我尝试了之前回答的所有解决方案,但没有运气。我还尝试在表面画布上设置单个位图,但闪烁不会消失。这是要绘制的代码:

@Override
public void run() {
    Canvas c = null;
    while (_running) {
        try {

            c = holder.lockCanvas(null);
            synchronized (holder) {
                if (c == null) {
                    continue;
                }
                c.setBitmap(mBitmap);
                doDraw(c);
            }
        } finally {
            if (c != null) {
                holder.unlockCanvasAndPost(c);
            }
        } 
   }
}

 private void doDraw(Canvas canvas) {
    if (canvas != null) {
                canvas.drawPath(mPath, mPaint);
                canvas.drawBitmap(mBitmap, 0, 0, mPaint);

    }
 }

任何帮助都很感激。提前致谢

1 个答案:

答案 0 :(得分:0)

当我在某些地方用手指画画时,有时会出现闪烁现象。原因是MainUiThread和SurfaceView的抽屉线程同时绘制了同一个对象。这就是出现错误图纸的原因。同步对象后问题消失了。