기존에 사용하던 코드이지만 SDK 30 이상부터는 Deprecation 되어 대응하는 코드가 필요했다.
val displaySize = Point()
windowManager.defaultDisplay.getSize(displaySize)
대응코드
fun WindowManager.currentWindowMetricsPointCompat(): Point {
return if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.R) {
val windowInsets = currentWindowMetrics.windowInsets
var insets: Insets = windowInsets.getInsets(WindowInsets.Type.navigationBars())
windowInsets.displayCutout?.run {
insets = Insets.max(insets, Insets.of(safeInsetLeft, safeInsetTop, safeInsetRight, safeInsetBottom))
}
val insetsWidth = insets.right + insets.left
val insetsHeight = insets.top + insets.bottom
Point(currentWindowMetrics.bounds.width() - insetsWidth, currentWindowMetrics.bounds.height() - insetsHeight)
} else {
Point().apply {
@Suppress("DEPRECATION")
defaultDisplay.getSize(this)
}
}
}
사용방법
val displaySize = windowManager.currentWindowMetricsPointCompat()
'Android(Kotlin)' 카테고리의 다른 글
[Kotlin]windowManager.defaultDisplay.getRealMetrics DEPRECATION 대응 코드 (0) | 2024.12.18 |
---|---|
[Kotlin] AsyncTask Deplecated Observable.fromCallable() 로 대체하기 (0) | 2024.12.02 |
[Kotlin] RxJava / retrofit2 이용한 API 서버 연동 (0) | 2024.11.28 |
[Kotilin] 연산자 (Operators) (0) | 2024.11.13 |
[Kotlin] for / foreach / while / do while (0) | 2024.10.04 |