반응형
해상도 기본 개념
px, dp, dip
화면 밀도 종류
해상도에 따른 작업 방법

해상도

해상도는 선명도, 화질이라는 단어로 사용하기도 한다.

화면상의 그림이나 텍스트의 선명도를 이야기한다.

보통 1인치 안에 화소(pixel) 또는 점(dot)이 몇개가 있는지로 나타낸다.

  • dpi(dots per inch)
  • ppi(pixel per inch)

px(pixel)

픽셀 또는 화소라고 한다.

  • picture + element

화면을 구성하는 가장 작은 단위

사각형으로 구성되어 있으며, ARGB값을 보유

dp(Density-Independent Pixel)

Android에서 개발된 단위

직역하면 “밀도에 독립적인 픽셀”

해상도에 관계 없이 같은 비율로 표현됨

 

[안드로이드] dp(dip)란 무엇인가?

안드로이드 개발을 하다보면 어플리케이션에 이미지를 넣을 때 dp개념이 등장한다. 주로 안드로이드 디자인 측면에서 많이 사용되지만, 개발자가 알아두어도 도움이 될 것 같아서 글을 작성하

lotuslee.tistory.com

sp(Scale-Independent Pixel)

Android에서 개발된 단위

직역하면 “배율에 독립적인 픽셀”

사용자가 지정한 배율에 따라 확대 축소 됨

화면 밀도 종류

  • ldpi
    • 저밀도(ldpi)의 화면(~120dpi)에 대한 리소스입니다.
  • mdpi
    • 중밀도(mdpi)의 화면(~160dpi)에 대한 리소스입니다. (이것이 기준 밀도입니다.)
  • hdpi
    • 고밀도(hdpi)의 화면(~240dpi)에 대한 리소스입니다.
  • xhdpi
    • 초고밀도(xhdpi)의 화면(~320dpi)에 대한 리소스입니다.
  • xxhdpi
    • 초초고밀도(xxhdpi)의 화면(~480dpi)에 대한 리소스입니다.
  • xxxhdpi
    • 초초초고밀도(xxxhdpi) 사용(~640dpi)에 대한 리소스입니다.
  • nodpi
    • 모든 밀도에 대한 리소스입니다. 이들은 밀도 독립적 리소스입니다. 이 한정자 태그가 지정된 리소스의 경우 현재 화면의 밀도에 관계없이 시스템에서 리소스 크기를 조정하지 않습니다.
  • tvdpi
    • mdpi와 hdpi 사이의 화면(약 213dpi)에 대한 리소스입니다. 이 값은 '기본' 밀도 그룹으로 간주되지 않습니다. 대개의 경우 텔레비전용이며 앱에서는 대부분 필요하지 않습니다. 앱은 대부분 mdpi 및 hdpi 리소스를 제공하는 것으로 충분하며 시스템에서 필요에 따라 확장합니다. tvdpi 리소스를 제공해야 한다고 생각되는 경우 1.33*mdpi로 크기를 지정합니다. 예를 들어 mdpi 화면의 100px x 100px 이미지가 tvdpi에서는 133px x 133px입니다.

해상도에 따른 작업 방법

  • 저밀도(ldpi)의 경우 36x36(0.75x)
  • 중밀도(mdpi)의 경우 48x48(1.0x 기준)
  • 고밀도(hdpi)의 경우 72x72(1.5x)
  • 초고밀도(xhdpi)의 경우 96x96(2.0x)
  • 초초고밀도(xxhdpi)의 경우 144x144(3.0x)
  • 초초초고밀도(xxxhdpi)의 경우 192x192(4.0x)

노션 AI 답변

  • 안드로이드에서는 각 화면마다 XML 파일로 레이아웃을 작성합니다. 이 때, 다양한 해상도를 고려하여 레이아웃을 작성해야 합니다. 다음은 이를 위한 작업 방법입니다.
    • 레이아웃 파일의 이름에는 뒤에 w, h, sw, sh 등의 접미사를 붙일 수 있습니다. 이를 통해 각각 너비, 높이, 최소 너비, 최소 높이 등을 고려한 레이아웃을 작성할 수 있습니다.
    • layout_weight 속성을 이용하여 레이아웃의 비율을 지정할 수 있습니다. 이를 통해 다양한 해상도에서도 동일한 비율의 레이아웃을 구성할 수 있습니다.
    2. 이미지 파일의 준비
    • drawable 폴더에는 가장 높은 해상도의 이미지 파일을 저장합니다. 이후 drawable-sw600dp, drawable-mdpi, drawable-hdpi 등의 폴더를 생성하여 각 해상도에 맞는 이미지 파일을 저장합니다.
    • vector 형식의 이미지를 사용할 수 있습니다. 이는 다양한 해상도에서 깨지지 않는 벡터 이미지를 사용하는 것으로, drawable 폴더에 저장하면 됩니다.
    3. 자바 코드의 작성
    • DisplayMetrics 클래스를 이용하여 현재 디바이스의 해상도를 구할 수 있습니다. 이를 통해 동적으로 UI를 제어할 수 있습니다.
    • dp 단위를 이용하여 UI를 작성합니다. 이는 다양한 해상도에서 동일한 크기를 유지하기 위한 방법입니다.
    안드로이드에서는 다양한 해상도를 고려한 UI 작업이 필수적입니다. 위의 방법을 참고하여 적절한 작업을 수행해 보시길 바랍니다.

결론

이미지

  • 이미지의 경우 밀도 기준으로 적용할 수 있는 dp값을 사용하는게 바람직하다 판단됨
  • 단, 이미지가 전체 영역(match-parent)을 물고 있다면, 비율로 조정하는게 좋을 것 같음

텍스트

  • 텍스트는 Android에서는 sp사용을 권장하고 있음.(배율에 따른 크기)
  • 개인적인 생각으로는 통화면 텍스트(약관 같은 통화면에 텍스트만 있는 화면)가 아니라 한정된 영역 텍스트 혹은, 버튼 텍스트 같은 뷰에 종속되어 있는 텍스트는 dp값을 사용하는게 바람직하다 판단됨

참고 자료

 

화면 호환성 개요  |  Android 개발자  |  Android Developers

화면 호환성 개요 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android는 다양한 기기에서 실행되며, 이들 기기의 화면 크기와 픽셀 밀도는 다양합니다. 시

developer.android.com

 

다양한 픽셀 밀도 지원  |  Android 개발자  |  Android Developers

다양한 픽셀 밀도 지원 컬렉션을 사용해 정리하기 내 환경설정을 기준으로 콘텐츠를 저장하고 분류하세요. Android 기기는 다양한 화면 크기(핸드셋, 태블릿, TV 등)로 제공될 뿐만 아니라 화면의

developer.android.com

 

반응형

'Android' 카테고리의 다른 글

Foreground Service  (0) 2023.06.02
Service  (0) 2023.05.24
DI(Koin)  (0) 2023.02.27
DataStore  (0) 2023.01.23

+ Recent posts