화면 호환성 개요

Android는 다양한 기기에서 실행되며, 이들 기기의 화면 크기와 픽셀 밀도는 다양합니다. 시스템에서는 기본 크기 조정과 크기 조절을 실행하여 다양한 화면에 맞게 사용자 인터페이스를 조정하지만 각 화면 유형에 맞게 UI를 더 잘 조정할 수 있는 방법이 있습니다.

그림 1. Android는 화면과 픽셀 밀도가 서로 다른 여러 기기에서 실행됩니다.

이 페이지에서는 앱을 적절하게 조정할 수 있도록 Android에서 사용할 수 있는 기능을 간략하게 설명합니다. 다양한 화면 변형에 맞는 앱을 빌드하는 방법에 관한 자세한 내용은 다음 문서를 참고하세요.

화면 크기

화면 크기는 앱 UI에 표시되는 공간입니다. 앱에서 인식하는 화면 크기는 기기 화면의 실제 크기가 아닙니다. 앱은 화면 방향, 시스템 장식(예: 탐색 메뉴), 창 구성 변경사항(예: 사용자가 멀티 윈도우 모드를 사용 설정하는 경우)을 고려해야 합니다.

유연한 레이아웃

기본적으로 Android에서는 현재 화면에 맞게 앱 레이아웃의 크기를 변경합니다. 화면 크기의 미세한 변화에도 레이아웃 크기가 잘 조절되도록 하려면 유연성을 염두에 두고 레이아웃을 구현합니다. UI 구성요소의 위치와 크기를 하드코딩하지 마세요. 대신 뷰 크기를 늘리고 상위 뷰 또는 기타 동위 뷰를 기준으로 뷰 위치를 지정하여 레이아웃이 커져도 의도한 순서와 상대적 크기가 동일하게 유지되도록 하세요.

유연한 레이아웃에 관한 자세한 내용은 반응형 디자인을 참고하세요.

대체 레이아웃

유연한 레이아웃은 중요하지만 다양한 기기에서 사용 가능한 공간에 맞게 사용자 환경을 최적화하는 다양한 레이아웃을 디자인해야 합니다. Android에서는 현재 기기의 화면 크기를 기반으로 런타임에 시스템이 적용하는 대체 레이아웃 파일을 제공할 수 있습니다.

그림 2. 동일한 앱이 다양한 화면 크기에 다른 레이아웃을 사용합니다.

대체 레이아웃을 만드는 방법을 알아보려면 적응형 디자인을 참고하세요.

늘릴 수 있는 이미지

현재 화면에 맞게 레이아웃을 늘려야 하므로 레이아웃 뷰에 첨부하는 비트맵도 확장해야 합니다. 그러나 일반 비트맵을 임의의 방향으로 늘리면 이상한 크기 조정 아티팩트가 발생하고 이미지가 왜곡될 수 있습니다.

이 문제를 해결하기 위해 Android는 나인 패치 비트맵을 지원합니다. 이 비트맵에서는 늘릴 수 있는 작은 픽셀 영역을 지정하고 이미지의 나머지 부분은 확장되지 않은 상태로 유지됩니다.

나인 패치 비트맵에 관한 자세한 내용은 Ninepatch 드로어블을 참고하세요.

픽셀 밀도

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

그림 3. 크기는 동일하지만 픽셀 밀도가 다른 두 기기의 과장된 표현

밀도 독립성

앱은 그림 3과 같이 픽셀 밀도가 다른 화면에 표시될 때 UI 디자인의 실제 크기가 보존되면(사용자의 관점에서) '밀도 독립성'을 달성합니다. 밀도 독립성을 유지하는 것이 중요합니다. 밀도 독립성이 없으면 버튼과 같은 UI 요소가 밀도가 낮은 화면에서는 더 크게, 고밀도 화면에서는 더 작게 보일 수 있기 때문입니다.

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

밀도 독립형 픽셀에 관한 자세한 내용은 밀도 독립형 픽셀 사용을 참고하세요.

대체 비트맵

모든 화면에서 이미지를 최상의 상태로 표시하려면 각 화면 밀도와 일치하는 대체 비트맵을 제공합니다. 앱이 저밀도 화면에만 비트맵을 제공하면 Android는 고밀도 화면에서 이미지가 화면에서 동일한 물리적 공간을 차지하도록 비트맵을 확장합니다. 이로 인해 비트맵에 시각적 크기 조정 아티팩트가 발생할 수 있습니다. 따라서 앱에는 더 높은 해상도의 대체 비트맵이 포함되어야 합니다.

대체 비트맵을 제공하는 방법을 알아보려면 대체 비트맵 제공을 참고하세요.

벡터 그래픽

아이콘과 같이 간단한 이미지 유형의 경우 벡터 그래픽을 사용하면 밀도마다 별도의 이미지를 만들지 않아도 됩니다. 벡터 그래픽은 픽셀 대신 기하학적 선 경로로 그림을 정의하기 때문에 아티팩트의 크기를 조정하지 않고도 원하는 크기로 그릴 수 있습니다.

벡터 그래픽 사용에 관한 자세한 내용은 벡터 그래픽 선호를 참고하세요.

Wear OS, TV, Auto, ChromeOS

위의 권장사항은 모든 Android 폼 팩터에 적용되지만 Wear OS, Android TV, Android Auto 또는 ChromeOS 기기용 앱을 빌드하려면 더 많은 작업을 해야 합니다.

이러한 각 기기 유형에는 앱에서 수용해야 하는 자체 사용자 상호작용 모델이 있습니다. 일부 경우(예: Wear OS의 경우)에서는 앱의 사용자 환경을 다시 생각하고 해당 기기에 특화된 앱을 빌드해야 합니다. 반면 Google Pixelbook과 같은 ChromeOS 기기를 지원하려면 키보드 또는 마우스 상호작용과 더 큰 화면을 지원하도록 기존 앱을 약간만 수정하면 됩니다.

이러한 기기를 지원하려면 다음 문서를 참조하세요.

폴더블

폴더블 기기에는 일반적으로 여러 디스플레이가 있으며, 다양한 디스플레이(또는 여러 디스플레이 조합)가 다양한 상태의 기기를 접을 때 활성화됩니다. 이 문서의 가이드라인에 따라 앱이 변화하는 구성에 맞게 조정되도록 합니다. 그러나 일부 구성은 가로세로 비율이 평소와 다를 수 있으므로 다양한 기기에서 앱이 어떻게 동작하는지 테스트해야 합니다.

그림 4. 접기 및 펼치기.

일반적으로 다양한 창 크기에 맞게 멀티 윈도우 모드에서 잘 작동하는 앱은 폴더블 기기에서도 잘 작동합니다.

폴더블용 앱을 빌드하는 방법에 관한 자세한 내용은 폴더블 알아보기를 참고하세요.

화면 비호환성

Android 프레임워크 및 도구는 모든 화면 구성에서 앱을 사용할 수 있도록 하는 데 필요한 모든 것을 제공하지만, 비호환성으로 인해 일부 화면 구성에서 앱을 사용하지 않도록 결정할 수도 있습니다. 이 경우 제한된 화면 지원을 선언할 수 있습니다.