2014-06-05 2 views
0

표면 뷰에서 깜박 거리는 문제를 해결할 수 없습니다. FingerPaint 프로젝트처럼 SurfaceView에서 드로잉을 그리는 중입니다. 그러나 SurfaceView 결과에서 이중 버퍼링은보기에 깜박입니다. 이전에 답변 한 모든 솔루션을 시도했지만 운이 없었습니다. 나는 또한 표면 캔버스에 단일 비트 맵을 설정하려고 시도했지만 깜박임이 사라지지 않았습니다. 그려야 할 코드는 다음과 같습니다.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); 

    } 
} 

도움을 주신 모든 분들께 감사드립니다. 미리 감사드립니다.

답변

0

때때로 손가락으로 일부 장소에서 그림을 그렸는데 때때로 깜박임이 나타났습니다. 그 이유는 MainUiThread와 SurfaceView의 서랍 스레드가 같은 대상을 동시에 그리는 것이었기 때문입니다. 그것이 잘못된 그림이 나타나는 이유입니다. 문제를 동기화 한 후에 문제가 사라졌습니다.