[Android Studio] 9장 - 폰 크기의 호환성

이상협·2022년 9월 8일
0

안드로이드스튜디오

목록 보기
35/43
post-custom-banner

폰 크기의 호환성

안드로이드폰은 여러 제조업체에서 다양한 크기로 출시한다.
그렇기 때문에 안드로이드 앱 개발자에게는 크기가 다양한 기기와 호환하는 화면을 만드는 것이 중요하다.

안드로이드 기기의 단위

  • dpi
dots per inch의 줄임말로 1인치 안에 있는 도트의 개수를 의미
  • 안드로이드 기기의 크기 구분
크기설명
ldpi저밀도 화면이며 ~120dpi
mdpi중밀도 화면이며 ~160dpi
hdpi고밀도 화면이며 ~240dpi
xhdpi초고밀도 화면이며 ~320dpi
xxhdpi초초고밀도 화면이며 ~480dpi
xxxhdpi초초초고밀도 화면이며 ~640dpi

안드로이드에서 앱을 개발할 때 크기 지정에서 사용할 수 있는 단위

- dp(dpi:density-independent pixels):스크린의 물리적 밀도에 기반을 둔 단위
- sp(sip:scale-independent pixels):dp와 유사하며 글꼴 크기에 적용
- pt(points):스크린 크기의 1/72을 1pt로 함
- px: 픽셀
- mm: 밀리미터
- in: 인치
  • px와 dp 단위 크기 지정 예
<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="HelloWorld"
    android:textSize="12px"/>

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="HelloWorld"
    android:textSize="12dp"/>

mdpi폰에서 1dp는 1px이다.

크기별 배율

크기배율
ldpi0.75
mdpi1.0
hdpi1.5
xhdpi2.0
xxhdpi3.0
xxxhdpi4.0

화면 정보 가져오기

안드로이드 시스템은 기본으로 크기 호환성을 지원하지만 때로는 개발자가 직접 코드에서 조정할 수 있다.

  • 기기의 정보를 가져와야 조정 가능
  • 기기의 크기 정보를 가져오는 방법은 API 레벨 30 이후 버전과 이전 버전에서 차이가 있음
  • 30 이전 버전 - DisplayMetrics
  • 30 이후 버전 - WindowMetrics

기기의 가로, 세로 크기 가져오기

// MainActivity.kt
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) {
    val windowMetrics: WindowMetrics = windowManager.currentWindowMetrics
    binding.textView.text = "width : ${windowMetrics.bounds.width()}, " +
                           "height : ${windowMetrics.bounds.height()}"
} else {
    val display = windowManager.defaultDisplay
    val displayMetrics = DisplayMetrics()
    display?.getRealMetrics(displayMetrics)
    binding.textView.text = "width : ${displayMetrics.widthPixels}," +
                           "height : ${displayMetrics.heightPixels}"
}


참고

  • Do it! 깡쌤의 안드로이드 프로그래밍 with 코틀린 (개정판)
post-custom-banner

0개의 댓글