본문 바로가기
Android

[Doit 깡샘의 안드로이드 앱 프로그래밍 with 코틀린] 정리 9 - 화면 정보 가져오기

by 들풀민들레 2022. 2. 28.
본 글은 [Doit 깡샘의 안드로이드 앱 프로그래밍 with 코틀린 - 이지스퍼블리싱 (2022)] 의 내용을 발췌한 것입니다.

좀더 자세한 내용은 책 혹은 인강을 통해 확인해 주세요.

 

 

 

 

안드로이드 시스템은 기본으로 크기 호환성을 지원하지만 때로는 개발자가 직접 코드에서 조정할 수도 있습니다. 이때 기기의 크기 정보를 가져와야 합니다. 그런데 기기의 크기 정보를 가져오는 방법은 API 레벨 30 버전과 이전 버전에서 차이가 있습니다. 30 이전 버전에서는 DisplayMetrics로 크기 정보를 가져왔지만 30 버전부터는 이 방법을 지원하지 않고(deprecation), WindowMetrics를 이용해야 합니다. 따라서 다음처럼 30 버전을 기준으로 버전을 구분해서 작성해야 합니다.


다음 코드는 기기의 가로, 세로 크기를 가져오는 코드입니다.

 

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}"
}

Build.VERSION.SDK_INT는 앱이 실행되는 기기의 버전값이며 Build.VERSION_CODES.R은 안드로이드 11 버전, 즉 API 레벨 30을 의미합니다.