화면 호환성 개요

Android는 화면 크기 및 픽셀 밀도가 다양한 여러 기기에서 실행됩니다. 시스템에서는 기기별 화면에 맞게 사용자 인터페이스의 기본 크기 및 배율을 조정합니다. 하지만 UI가 각 유형의 화면에 자연스럽게 맞춰지려면 개발자가 해야 할 일이 많습니다.

이 페이지에서는 화면 호환성과 관련된 여러 주제를 간단하게 살펴보고 화면에 맞게 앱을 조정할 때 사용할 수 있는 Android 기능을 알아보겠습니다. 여러 다양한 화면에 맞게 앱을 개발하는 방법에 관한 자세한 내용은 다음 페이지를 참조하세요.

화면 크기

화면 크기는 사용자가 볼 수 있고 앱 UI가 표시되는 공간입니다. 앱에 제공되는 화면 크기는 기기 화면의 실제 크기가 아니며, 화면 방향, 탐색 메뉴 등의 시스템 장식, 창 구성 변경사항(사용자가 멀티 윈도우 모드를 사용 설정한 경우 등)을 고려하여 결정됩니다.

유연한 레이아웃

기본적으로 Android는 현재 화면에 맞게 앱 레이아웃 크기를 조정합니다. 화면 크기의 작은 변화에도 레이아웃이 잘 조정되게 하려면 융통성 있게 레이아웃을 구현해야 합니다. 핵심 원칙은 UI 구성요소의 위치 및 크기를 하드 코딩하지 않는 것입니다. 그 대신 보기 크기가 늘어나도록 하고 상위 요소 보기 또는 동위 요소 보기에 따른 보기 위치를 지정하여 레이아웃이 확대되어도 의도한 순서 및 상대적인 크기를 그대로 유지하세요.

유연한 레이아웃 자세히 알아보기

대체 레이아웃

유연한 레이아웃은 매우 중요합니다. 하지만 스마트폰과 태블릿 같은 여러 기기에서 사용할 수 있는 공간에 사용자 환경을 최적화하는 레이아웃을 디자인하는 일도 중요합니다. 그래서 Android에서는 현재 기기의 화면 크기에 따라 시스템에서 런타임 동안 적용할 수 있는 대체 레이아웃 파일을 제공합니다.

그림 1. 동일한 앱이 다른 화면 크기에 맞춰 서로 다른 레이아웃을 사용함

대체 레이아웃 만드는 방법 자세히 알아보기

늘릴 수 있는 이미지

레이아웃이 현재 화면에 맞게 늘어나야 하므로 레이아웃 보기에 첨부한 비트맵도 마찬가지로 늘어나야 합니다. 하지만 일반적인 비트맵을 임의의 방향으로 늘리면 스케일링 아티팩트가 이상해지고 이미지가 왜곡될 수 있습니다.

이를 해결하기 위해 Android에서는 9패치 비트맵을 지원합니다. 사용자는 늘릴 수 있는 작은 픽셀 영역을 지정할 수 있으며 이미지의 나머지 영역은 확장되지 않습니다.

9패치 비트맵 자세히 알아보기

픽셀 밀도

픽셀 밀도란 화면의 실제 영역 내에 있는 픽셀 개수로 dpi(인치당 도트 수)라고 합니다. 이는 화면에 있는 총 픽셀 수인 해상도와는 다릅니다.

그림 2. 크기는 동일하지만 필셀 밀도가 다른 두 기기를 확대한 모습

밀도 독립성

그림 2에서처럼 픽셀 밀도가 서로 다른 화면에 UI를 표시할 때 사용자의 관점에서 UI 디자인의 실제 크기가 유지되는 앱은 '밀도 독립성'을 확보합니다. 밀도 독립성이 없으면 버튼과 같은 UI 요소가 밀도가 낮은 화면에서는 크게, 밀도가 높은 화면에서는 작게 보일 수 있기 때문에 밀도 독립성을 유지하는 일은 중요합니다. 그림 2에서와같이 픽셀이 크면 일부 픽셀이 늘어나 보이기도 합니다.

Android 시스템에서는 측정 단위로 픽셀(px) 대신 사용할 수 있는 밀도 독립형 픽셀(dp 또는 dip)을 제공하여 밀도 독립성을 확보하도록 지원합니다.

밀도 독립형 픽셀 자세히 알아보기

대체 비트맵

모든 화면에서 이미지를 최상의 상태로 표시하려면 각 화면의 밀도에 맞는 대체 비트맵을 제공해야 합니다. 예를 들어 앱에서 중간 밀도(mdpi) 화면에 맞는 비트맵만 제공하는 경우 Android는 고밀도 화면에서 이미지가 화면에서 실제로 동일한 크기를 차지하도록 비트맵을 확대합니다. 이 과정에서 비트맵에 눈에 보이는 크기 조정 아티팩트가 발생할 수 있습니다. 그렇기 때문에 앱에 고해상도용 대체 비트맵이 있어야 합니다.

대체 비트맵 제공 방법 자세히 알아보기

벡터 그래픽

간단한 유형의 이미지(일반적으로 아이콘)인 경우 벡터 그래픽을 사용하면 밀도별로 별도의 이미지를 만들지 않아도 됩니다. 벡터 그래픽은 픽셀 대신 기하학적 선 경로를 사용하여 그림을 정의하므로 어떤 그림을 그리든 크기 조정 아티팩트도 발생하지 않습니다.

벡터 그래픽 사용 방법 자세히 알아보기

Wear OS, TV, Auto, Chrome OS

위의 권장사항은 모든 Android 폼 팩터에 적용되지만 Wear OS, Android TV, Android Auto, Chrome OS 기기용 앱을 개발하려면 추가적인 작업이 필요합니다.

이러한 기기에는 기기별로 고유한 사용자 상호작용 모델이 따로 있기 때문에 앱에서 고유한 모델을 사용해야 합니다. Wear OS용 앱 같은 경우에는 앱의 사용자 환경을 다시 생각해보고 기기에 특화된 앱을 만들어야 합니다. Chrome OS 기기(예: Google Pixelbook)를 지원하려면 키보드/마우스 상호작용 및 훨씬 더 큰 화면을 지원하도록 기존의 앱을 약간 변경하기만 해도 충분합니다.

이러한 기기를 지원하려면 다음의 개발자 가이드를 참조하세요.

화면 비호환성

Android 프레임워크 및 도구는 갖가지 화면 구성에서 사용 가능한 앱을 제공하기 위해 필요한 모든 항목을 제공하지만, 몇 가지 비호환성으로 인해 개발자가 일부 화면 구성에서는 앱을 제공하지 않겠다고 결정할 수도 있습니다.

이 경우 앱이 특정 화면만 지원한다고 선언하면 됩니다.