본문 바로가기
Android Kotlin

Android Kotlin SurfaceView

by 히예네 2024. 5. 19.
728x90
반응형

SurfaceView란?

surfaceView는 그저 투명한 막이다. surfaceHolder를 이용하여 그림을 그린다.

SurfaceView는 초당 프레임이 순식간에 바뀌는 카메라 미리보기나 게임, 영상 등 애니메이션이 들어간 경우에 사용하는 View이다.

SurfaceView는 Surface라는 별도의 메모리 공간에 그림을 그린다. (UI 스레드가 아니다.) 별도의 스레드로 그림을 그리기때문에 UI 스레드에서 과부하가 걸리는걸 막아준다. 

SurfaceView의 장점 : 더블 랜더링

더블 랜더링은 서피스라는 가상 공간에서 그림을 그린 후, 완벽하게 완성된 작품만 유저에게 보여준다. (그림 그리는 과정을 유저가 볼 수 없다.)

안드로이드에서는 오직 UI스레드만이 View 그릴 수 있다. 

 

View를 다 그릴때까지 UI스레드는 아무것도 할 수없다. 심지어 그림을 그리는 과정이 전부 노출되기때문에 이미지가 찢어진다던가 버벅거리는 현상이 유저에게 보여질 수 있다. UI스레드 혼자 작업하는 것을 싱글 버퍼링이라한다.

 

그런데 SurfaceView를 이용하면 Surface라는 유저가 볼 수 없는 공간에서 그림을 그리게된다.  (더블 버퍼링)

이렇게 되면 유저는 완벽하게 만들어진 그림만 보기때문에 버벅거림 등을 전혀 느낄 수 없다. 

 

code : https://github.com/kof99athena/camela

728x90
반응형