본문 바로가기
Android Q&A/Android One a day

[안드로이드 면접] - 14 :

by 후추부 2023. 2. 13.

1. 뷰가 렌더링에 대한 용어 정리

더보기

디스플레이 : 안드로이드 단말기가 가지고 있는 하드웨어 화면을 의미한다.


윈도우(Window) : 안드로이드에서 실행되는 App 이 그림(View)을 그릴 수 있는 영역을 의미한다. 사용자로부터 입력(터치, 키) 이벤트를 받아 앱에 전달한다.


서피스(Surface) : 화면에 합성되는 픽셀을 보유한 객체이다. 화면에 표시되는 모든 윈도우에 자신만의 서피스가 포함되어 있으며, 서피스 프린저가 여러 소스로부터 그래픽 데이터 버퍼를 받고 그것을 합성해 디스플레이로 보낸다.

즉, 그림(뷰)을 그릴 때 그림이 저장되는 메모리 버퍼를 의미한다.


캔버스(Canvas) : 실제 UI 를 그리기 위한 공간으로 비트맵이 그려지는 공간이라고 생각하면 된다.


 : 사용자 인터페이스를 구성하는 최상위 클래스를 말한다. 윈도우의 서피스를 이용하여 화면에 어떤 모양으로 그림을 그릴지와 발생하는 이벤트를 어떻게 처리할 것인지에 대한 기능을 구현하고 있다.


뷰 그룹 : 여러 개의 뷰를 포함하고 있는 뷰를 의미한다.


서피스뷰(SurfaceView) : 일반적인 View 는 Main Thread 에서 캔버스를 그리기 때문에, 그리기를 하는 동안에는 사용자의 입력을 받을 수 없고 그로 인해 반응성이 좋지 않다. 그렇다고 그리는 작업을 별도의 작업 스레드에서 처리하고 싶어도 안드로이드 정책상 Main Thread 가 아닌 별도의 Thread 에서는 UI 관련 작업을 할 수도 없다. 이럴 때 사용할 수 있는 게 SurfaceView 이다.

서피스뷰는 캔버스가 아닌 서피스에 그리고 그려진 서비스를 화면에 뿌리기 때문에 게임이나, 카메라 같은 높은 반응성이 필요한 UI 작업이 필요한 경우 사용할 수 있다.

 


뷰 컨테이너 : 다른 뷰를 포함할 수 있는 뷰를 의미한다. 리스트뷰, 스크롤뷰, 그리드뷰 등이 존재한다.


레이아웃 : 뷰 그룹 중에서 내부에 뷰를 포함하고 있으면서 해당 뷰를 어떻게 윈도우에 배치할지 정의하는 관리자 역할을 하는 클래스를 말한다. 레이아웃을 그리는 건 measure() -> onMeasure() -> layout() -> onLayout() 과정을 거친다.

 

2. 안드로이드에서 색상을 지정하는 다양한 방식은 어떤 것이 존재한가?

더보기

RGB,

ARGB,

RRGGBB,

AARRGGBB

 4가지 방식이 존재한다. 

R은 붉은색을, G는 초록색을, B는 파란색의 정도를 나타내며 A는 알파 값 즉, 투명도를 나타내는 수치이다.

각각의 요소는 16진수(0~F)로 표현이 가능하다.

 

3. 안드로이드의 크기를 표현하는 다양한 표현 방식은?

더보기

픽셀(px) : 화면의 픽셀을 의미한다

 

DPI(Dot Per Inch) : 1인치에 들어가는 픽셀을 나타내는 단위. (개수가 많을 수록 고밀도이다. 안드로이드 기준은 160dpi 이다.)

 

밀도 독립적 픽셀(dp, dip) : dp(Density-Independent Pixels) 160dpi(160인치에 들어가 있는 픽셀수) 화면을 기준으로 한 픽셀을 의미한다. dp 는 UI 레이아웃을 정의할 때 레이아웃 치수나 위치를 지정하기 위해 사용하는 단위이고, 픽셀 독립단위라 화면의 크기가 달라도 동일한 비율로 보여주기 위해 안드로이드에서 정의한 단위이다. 즉, 큰 화면 작은 화면에 상관없이 같은 크기로 나타난다.

 

축척 독립적 픽셀(sp, sip) : sp(Scale-Independent Pixels)는 가변 글꼴을 기준으로 한 픽셀을 의미한다. 글꼴의 설정에 따라 차이가 있다. 

 

텍스트 크기(em) : 글꼴과 상관없이 동일한 텍스트 크기를 표시하기 위한 단위이다.

 

그외, in, mm가 존재한다.