2011-08-02 4 views
2

난 데 문제는 그래프이다Android에서 올바르게 작동하지 않거나 더블 버퍼링을 이해하고 있습니까?

@Override 
public void run() { 
    while(running && (!eof)){ 
     if(surfaceHolder.getSurface().isValid()){ 
      Canvas canvas = surfaceHolder.lockCanvas(); 
      paint(canvas); 
      surfaceHolder.unlockCanvasAndPost(canvas); 
     } 
    } 
    thread = null; 
} 
페인트 (캔버스) 예를

canvas.drawText("Time="+myRecord.getMyTime(), 100, 100, paint); 

를 들어, 그래프 및 텍스트를 그릴 다른 기능의 무리를 호출

하는 기능을 가지고 그리고 둘 다 끊임없이 변화해야하는 텍스트는 지워지지 않고 그 대신 계속 그려지고 있습니다. Lock() 및 unlock()에서 이중 버퍼링이 작동하는 방식이므로 매번 전체 캔버스를 다시 그려야하지 않습니까? 이걸 제대로 이해하지 못 했나요? 어떻게해야합니까?

+0

@mibollma! 감사! – Kalina

+0

제목에 [해체 됨]을 표시하지 마십시오. 이것은 포럼이나 무언가가 아닙니다. 답변을 게시하고 수락하십시오. 또는 @mibollma에게 답을 달아서 답을 받아 들일 수 있도록 요청하십시오. – BalusC

답변

2

Canvas.drawColor()를 사용하여 lockCanvas()를 수행 한 후에 Canvas를 직접 지워야합니다.

이도 관련이있을 수 :

표면의 내용이 이 unlockCanvas() 및 lockCanvas는(), 이런 이유로, 표면적 내의 모든 픽셀을 작성해야합니다 사이에 보존되지 않습니다 . 이 규칙의 유일한 예외는 더러운 직사각형이 지정된 경우입니다.이 경우 비 더티 픽셀은 으로 보존됩니다. 그것을 고정

Source