0
어떻게 이런 일이 가능할지 모르지만 활동 A의 캔버스가 활동 B의 캔버스 상단에 나타납니다. 두 가지 활동은 항상 살아 있습니다. 활동 그룹). 하나의 활동에 대한 캔버스의 컨텐츠가 다른 활동 위에 표시 될 수도 있습니다. 내가 활동 A 또는 B 중 하나를 함께 할있을 때Android 캔버스 두 가지 활동 - 두 번째 캔버스에 그려진 내용
내가이 전화를하지만, 분명히 작동하지 않습니다 :
이void clearPlayerCanvas()
{
runOnUiThread(new Runnable(){
public void run()
{
Canvas canvas = null;
try
{
canvas = holder.lockCanvas();
if (canvas == null)
{
System.out.println("Cannot lock canvas, skipping MJpeg frame");
return;
}
canvas.drawColor(Color.BLACK);
}
finally
{
if (canvas != null)
holder.unlockCanvasAndPost(canvas);
}
}
});
}
이 코드는 단순히 덮어 쓰기 (자사에 가정) 검은 색과 현재의 캔버스. 어쨌든, 나는이 검은 캔버스를 활동 b에서 보지 않아야합니다. 그러나 나는 그렇습니다. SurfaceHolder도 사용하고 있습니다.
두 개의 서로 다른 활동을 생성하는 ActivityGroup이 있습니다. 여기에 대한 참조가있는보기가 있고 그 활동 그룹에서 this.addContentView (myView)를 수행합니다. 따라서 활동은 둘 다 ActivityGroup에서 실행됩니다. – spentak
"스레드 중지"란 무엇입니까? SurfaceHolder.lockCanvas는 자체 스레드에서 내용을 관리해야합니다. SurfaceHolder.unlockCanvasAndPost()는 캔버스에 사용 된 모든 스레드를 종료해야합니다. 내가 더 이상 무엇을해야합니까? – spentak
SurfaceHolders를 많이 사용하지는 않지만 이해하기 쉽습니다. lockCanvas와 unlockCanvas는 하나의 스레드 만 Canvas에 쓰도록하는 뮤텍스입니다. Canvas에 쓰는 두 개의 쓰레드가 있다면, 하나는 그리기를하고, 다른 하나는 Canvas가 잠기지 않게됩니다. 캔버스가 잠겨 있으면 액세스하려고하는 스레드는 잠금 해제 될 때까지 차단됩니다. – DeeV