App노자
[Android] 화면 호환성 본문
1. 화면 호환성이란?
Android 기기는 다양한 화면 크기로 제공될 뿐만 아니라 화면의 픽셀 크기도 다양하다
기기마다 사용하는 픽셀이 다르고 이러한 픽셀 밀도의 편차를 고려하지 않으면 시스템이 이미지를 확대해 이미지가 흐려지거나 이미지가 잘려서 보이지 않는 현상이 발생하기 앱을 개발할 때는 언제나 화면 호환성을 고려해야 한다
화면 호환성은 안드로이드 시스템에서 도와주는 부분이 있고 개발자가 코드로 직접 제어해야 하는 부분이 있다
https://developer.android.com/training/multiscreen/screendensities?hl=ko
다양한 픽셀 밀도 지원 | Android 개발자 | Android Developers
다양한 픽셀 밀도 지원 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 기기는 다양한 화면 크기(핸드셋, 태블릿, TV 등)로 제공될 뿐만 아니라 화면의
developer.android.com
2. 논리적인 단위
dp: 스크린의 물리적 밀도에 기반을 둔 단위
sp: dp와 유사하며 글꼴 크기에 적용
pt: 스크린 크기의 1/72을 1pt로 함
px: 픽셀
mm: 밀리미터
in: 인치
안드로이드 시스템은 기기의 크기를 구분하여 콘텐츠의 크기를 늘리거나 줄여서 화면에 맞출 수 있게 도와준다
서로 다른 화면에서 UI크기를 유지하려면 dp나 sp를 사용해서 UI를 디자인하는 게 좋다
1dp는 mdpi 화면의 1픽셀과 거의 동일한 가상 픽셀 단위이다
공식문서에서는 일반 크기는 dp 텍스트 크기는 sp를 사용하는 것을 권하고 있다
ldpi: 저밀도 화면(~120dpi)
mdpi: 중밀도 화면(~160dpi, 기준)
hdpi: 고밀도 화면(~240dpi)
xhdpi: 초고밀도 화면(~320dpi)
xxhdpi: 초초고밀도 화면(~480dpi)
xxxhdpi: 초초초고밀도 (~640dpi)
안드로이드는 기기의 크기를 Idpi, mdpi, hdpi, xhdpi, xxhdpi xxxhdpi로 구분한다
dpi는 dots per inch의 줄임말로 1인치 안에 있는 도트의 개수를 의미한다
ldpi: 0.75
mdpi: 1.0
hdpi: 1.5
xhdpi: 2.0
xxhdpi: 3.0
xxxhdpi: 4.0
px = dp * (dpi / 160)
일부 경우 dp를 픽셀로 변환해야 할 때가 있다
아래는 mdpi화면에서의 계산 예시이다
1px = dp * (160 / 160)
-> 1px = 1dp
3. DisplayMetrics 클래스
ldpi: 0.75
mdpi: 1.0
hdpi: 1.5
xhdpi: 2.0
xxhdpi: 3.0
xxxhdpi: 4.0
px = dp * (dpi / 160)
'Android > AndroidStudio' 카테고리의 다른 글
[Android] Data Binding Library (데이터 바인딩) (0) | 2023.07.10 |
---|---|
[Android] SwipeRefreshLayout (새로고침) (0) | 2023.07.08 |
[Android] Popup Menu (팝업 메뉴) (0) | 2023.07.03 |
[Android] startActivity, startActivityForResult (0) | 2023.06.28 |
[Android] Event handler (0) | 2023.06.27 |