안드로이드 개발 질문/답변
(글 수 45,052)
소스를 보면서 공부하는중.
View의 onDraw와
SurfaceView의 draw 함수가 있었습니다.
SurfaceView는 callback 함수를 써서 사용하고,
View는 콜백을 쓰지 않아도 되는데요.
대신 View는 쓰레드를 돌릴때, handler러 라는것을 사용해서 돌리고,
SurfaceView는 쓰레드를 그냥돌리면서 callback을 호출하게 되는데요.
이두개를 모두 사용해본결과, 잘됬습니다.
근데, 이 두개의 차이점이 어떤건지좀 가르쳐주십시요.
View의 onDraw와
SurfaceView의 draw 함수가 있었습니다.
SurfaceView는 callback 함수를 써서 사용하고,
View는 콜백을 쓰지 않아도 되는데요.
대신 View는 쓰레드를 돌릴때, handler러 라는것을 사용해서 돌리고,
SurfaceView는 쓰레드를 그냥돌리면서 callback을 호출하게 되는데요.
이두개를 모두 사용해본결과, 잘됬습니다.
근데, 이 두개의 차이점이 어떤건지좀 가르쳐주십시요.
좀 더 쉽게 비유해서 설명해드리자면 도화지가 있고 거기에 그림을 그려야 한다면
View는 도화지 1장에서 그리고 지우고를 하는 것이고
SurfaceView는 도화지 2장을 가지고 1장에 그려서 다른 1장에 계속 복사해 넣는 방법입니다.
차이점은 무엇일까요? 만약 그려지는 객체가 많거나 주기가 매우 짧다면 View는 그 그려지는 중간과정(깜박임)이 보여지게 됩니다.(직접 그려짐으로)
하지만 SurfaceView는 안보여지는 도화지에 먼저 그린 후에 보여지는 도화지에 복사하기 때문에 깜빡임이 없이 자연스럽게 보여줄 수 있는 것이지요.
그래서 그래픽 처리가 많아지는 게임이나 카메라 Viewing에 SurfaceView를 사용한답니다.
SurfaceView에서 holder가 그 안보이는 도화지에 그리는 역할을 하는것이지요.
도움이 되셨는지요? +_+?