[Android/Kotlin] 스크린 사이즈 구하기

SoyoungLee·2024년 8월 30일
0

안드로이드/코틀린

목록 보기
69/70

💌 [Android/Kotlin] 스크린 사이즈 구하기

스크린 사이즈를 구하는 메소드들의 차이를 정리해보았다.

💙 getSize()

  • 시스템 UI 제외 또는 포함 (API에 따라 다름).
  • Deprecated in API level 30
    @return Point

💙 getRealSize()

  • 실제 화면 크기 (시스템 UI 포함). 상태바에 달린 카메라 영향 O
  • Deprecated in API level 31
    @return Point

💙 getMetrics()

  • 시스템 UI 제외, 사용 가능 영역. status bar 에 카메라가 달린 폰과 아닌 폰에서 가져오는 높이 값이 다름.
  • Deprecated in API level 30
    @return DisplayMetrics

💙 getRealMetrics()

  • 실제 화면 크기 (시스템 UI 포함). status bar 에 카메라가 달린 폰과 아닌 폰 상관없이 디바이스의 실제 해상도 값을 리턴.
  • Deprecated in API level 31
    @return DisplayMetrics

스크린 사이즈를 구하는 중 deprecated 된 메소드들이 있어서 분기 처리를 해주었다.

'getRealMetrics(DisplayMetrics!): Unit' is deprecated. Deprecated in Java
'getter for defaultDisplay: Display!' is deprecated. Deprecated in Java

   fun getScreenSize(context: Context): Pair<Int, Int> {
            val windowManager = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager

            return when {
                Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> {
                    val windowMetrics = windowManager.currentWindowMetrics
                    val bounds = windowMetrics.bounds
                    Pair(bounds.width(), bounds.height())
                }
                Build.VERSION.SDK_INT >= Build.VERSION_CODES.R -> {
                    val display = DisplayManagerCompat.getInstance(context).getDisplay(Display.DEFAULT_DISPLAY)
                    val displayMetrics = DisplayMetrics()
                    display?.getRealMetrics(displayMetrics)
                    Pair(displayMetrics.widthPixels, displayMetrics.heightPixels)
                }
                else -> {
                    val displayMetrics = DisplayMetrics()
                    windowManager.defaultDisplay.getRealMetrics(displayMetrics)
                    Pair(displayMetrics.widthPixels, displayMetrics.heightPixels)
                }
            }
        }

참고 : https://developer.android.com/reference/android/view/WindowManager?_gl=1*1gtlwsa*_up*MQ..*_ga*MTczMTY5NTM5Mi4xNzI0OTE5NTg3*_ga_6HH9YJMN9M*MTcyNDkxOTU4Ny4xLjAuMTcyNDkxOTU4Ny4wLjAuMA..
https://developer.android.com/reference/android/view/Display?_gl=1*1ivze56*_up*MQ..*_ga*MTIzODA2MTA2NS4xNzI0ODk3ODE4*_ga_6HH9YJMN9M*MTcyNDg5NzgxNy4xLjAuMTcyNDg5NzgxNy4wLjAuMA..
https://appdev-room.com/android-devise-size
https://stackoverflow.com/questions/70015724/display-getrealmetrics-is-deprecated
https://doa-oh.tistory.com/180

profile
Android Developer..+ iOS 슬쩍 🌱 ✏️끄적끄적,,개인 기록용 👩🏻‍💻

0개의 댓글