안드로이드 개발자의 창고
[51일차 Android] Density(해상도 대응) 본문
출처 : 안드로이드 앱스쿨 2기 윤재성 강사님 수업 PPT
📖 Density
- 안드로이드는 단말기의 해상도에 따라 이미지를 선택할 수 있다.
- 고해상도 단말기에서 선명한 이미지를 보여주는 목적으로 사용한다.
- 같은 이미지를 해상도 별로 나눠 준비해놓으면 해상도에 맞는 이미지를 자동으로 사용해준다.
- 관리가 힘들다는 단점이 있다.
해상도에 따른 분류
dpi | 배율 | |
ldpi | ~ 120 | 0.75 |
mdpi | ~ 160 |
1.0
|
hdpi | ~ 240 | 1.5 |
xhdpi | ~ 320 | 2.0 |
xxhdpi | ~ 480 | 3.0 |
xxxhdpi | ~ 640 | 4.0 |
drawable 이미지 적용
- 단말기 해상도에 해당하는 디렉토리에 이미지가 있을 경우 원본 크기 그대로 그린다.
- 해상도에 해당하는 디렉토리에 이미지가 없을 경우 인접한 해상도 디렉토리의 이미지를 가져와 적당한 배율로 확대/축소해서 그린다.
- 인접한 해상도 디렉토리에 이미지가 없을 경우 drawable 디렉토리의 이미지를 확대/축소해서 그린다.
mipmap 이미지 적용
- 안드로이드는 런처 애플리케이션을 다른 것으로 교체할 수 있도록 지원하고 있다.
- 런처를 개발한 개발자가 아이콘의 크기를 자유롭게 설정하여 만들 수 있다.
- mipmap 폴더의 이미지는 바탕화면 런처에서 표시되는 아이콘의 크기에 따라 이미지가 선택된다.
- 아이콘의 크기가 50dpi 면 mdpi 폴더의 이미지를 사용하고 100dpi면 xhdpi의 이미지가 선택된다.
예제 코드
이름이 같은 파일끼리 묶어 폴더로 만들어진다.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".MainActivity" >
<ImageView
android:id="@+id/imageView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/android1" />
<ImageView
android:id="@+id/imageView2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/android2" />
<ImageView
android:id="@+id/imageView3"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:srcCompat="@drawable/android3" />
</LinearLayout>
결과
왼쪽부터 차례대로 MDPI, HDPI, XXHDPI
- 첫번째 이미지는 해상도에 맞춘 이미지가 없고 하나의 이미지만 존재한다. 그러므로 오른쪽으로 갈수록 확대하여 이미지를 나타내며 화질이 나빠지게 된다.
- MDPI의 두번째와 세번째 이미지는 해상도에 맞는 이미지가 없으므로 HDPI의 이미지를 축소하여 나타낸다.
- HDPI의 두번째와 세번째 이미지는 크기가 (203X200) 이므로 크기가 동일하게 나타난다.
- XXHDPI의 두번째와 세번째 이미지는 크기가 각각 (203X200), (405X400)이므로 크기가 다르게 나타난다.
'Computer > Android' 카테고리의 다른 글
[51일차 Android] Device Information(단말기 정보 파악) (0) | 2023.07.19 |
---|---|
[51일차 Android] Screen Rotation(화면 회전 대응) (0) | 2023.07.19 |
[51일차 Android] Localization(지역화) (0) | 2023.07.18 |
[51일차 Android] 9Patch Image (0) | 2023.07.18 |
[50일차 Android] Image Resource / Image Animation (0) | 2023.07.18 |