fun getDeviceMetric(): ScreenSizeInfo =
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.R) {
val displaySize = Point()
context.getSystemService(WindowManager::class.java).defaultDisplay?.getRealSize(displaySize)
ScreenSizeInfo(
screenWidth = displaySize.x,
screenHeight = displaySize.y
)
} else {
val metrics = context.getSystemService(WindowManager::class.java).maximumWindowMetrics
ScreenSizeInfo(
screenWidth = metrics?.bounds?.width(),
screenHeight = metrics?.bounds?.height()
)
}
data class ScreenSizeInfo(
val screenWidth: Int? = 0,
val screenHeight: Int? = 0
)
Android SDK 30 이후부터는 display에 관련하여 함수들이 이것저것 Deprecated 된 게 많기 때문에 SDK 30 이전 버전을 위한 코드로 인해 지저분해 보이는 단점이 있다.
위 코드는 size를 구해오는 과정에서 null(혹은 0)일때의 처리가 별도로 없기 때문에 반드시 고려하여 사용해야 한다.
'Android' 카테고리의 다른 글
[Android] Retrofit2 (0) | 2022.04.07 |
---|---|
[Android] Shape에 margin 속성 추가하기 (0) | 2022.04.05 |
[Android] CameraX (0) | 2022.01.10 |
[Android] JitPack 안드로이드 라이브러리 모듈 배포하기 (0) | 2021.12.30 |
[Android] 안드로이드 스튜디오 GradleView Tasks 미노출시 (0) | 2021.12.28 |