나는 초보자입니다. 나는 캔버스를 사용하여 간단한 게임을 만든다. onDraw() 메서드 안에 거의 모든 코드를 썼는데 거기에는 많은 계산이 있습니다. 내 코드에서 onDraw() 끝 부분에 invalidate() 메서드가 있습니다. 그게 내 견해를 다시 그리는 방법입니다. Canvas의 일부만 다시 그리는 방법은 무엇입니까? 주요 문제는 onDraw() 내부에서 많은 계산이 이루어지고 전체 게임이 느려지 게된다는 것입니다. 여기처럼 비트 맵을 사용하려 :부분적으로 캔버스를 다시 그리는 방법?
creating a bitmap - stackOverflow
하지만 비트 맵을 만드는 것은 너무 느린 과정이기 때문에이 문제가 해결되지 않았다. SurfaceHolder와 Callback을 사용하는 것이 좋은 생각입니까? 나는 그것을 사용하려고 노력했지만 그것이 내가하고 싶은 일을하는 올바른 방법인지는 모른다. 아무도 나를 도울 수 있습니까? 선택한 요소를 중지하기 위해 내보기를 부분적으로 만 다시 그리는 방법 항상 새 계산으로 다시 그리기 (저장된 상태에서 그리기)? 필요한 경우에만 전체보기를 다시 그리기를 원합니다. 만약 누군가가이 문제를 해결할 코드를 게시한다면 그것은 좋을 것입니다 (심지어 두 개의 직사각형 일 수도 있습니다).
먼저 'onDraw'에서 많은 계산이나 메모리 할당을해서는 안됩니다. 무효화가 호출되기 전에 완료되어야합니다. 이러한 계산을 수행하는 새 스레드를 추가 할 수 있습니다. 그리고 그들이 postInvalidate();를 호출 한 후에. 그리고'onDraw'를 혼자서 호출하지 마십시오.'invalidate' 또는'postInvalidate'는 그 자체로 않습니다. – Mikhail