본문 바로가기

IT/Android

[이론정리]01.SurfaceView

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

1.View란 무엇인가??

View는 Activity 위에 존재하여 사용자에게 보여지는 이미지들이라고 생각하면 됩니다.

예를 들어 image, adapter, text 등이 있죠.

그렇다면 View라는 것은 어떻게 사용자들에게 보여질까요?

그것은 GDI(Graphic Design Interface) Thread 라는 놈이 Surface라는 공간에 이미지 그림을 그리게 되고 이것이 View로 보여지는 것입니다.

2.그럼 SurfaceView는??

GDI Thread가 Surface라는 공간에 그림을 그릴때는 많은 CPU자원을 사용하고 시간도 오래 걸리게 됩니다. 그렇게 되면 게임이나 카메라와 같은 실시간으로 움직임이 동기화되어야 하는 앱 같은 경우에는 버벅이는 현상이 나오거나, 다른 작업들은 못하게 되겠죠?? H/W 성능이 부족하니깐요...

그래서 게임이나 카메라와 같은 작업을 할때는 일반 View를 사용하는 것이 아닌 SurfaceView라는 것을 이용합니다.

아래 그림을 보면

Activity, SurfaceView, Window, View 네 가지 층이 보입니다.

SurfaceView는 시스템이 SurfaceHolder의 Callback 을 호출하여 SurfaceView라는 공간에 그리게 되고 이 곳에 그려진 이미지는 Window의 층을 통과??(투과??)하여 VIew에 비춰지는 것입니다. View에 비춰지는 이미지를 우리는 볼 수 있는 것이구요.

View에 직접 그리는 것보다 SurfaceView에 그림을 그리는 것이 훨씬 빠르겠죠??

그림으로 이해하기 위해 아래를 보면


SurfaceHolder라는 놈이 Surface라는 Buffer에 그림을 그리고 그것이 SurfaceView에 반영되는 것입니다.


3. SurfaceView는 어떻게 적용하는가??

소스 구현은 지금 개발하고 있는 앱을 만들면서 추가하겠습니다.