티스토리 뷰
px VS dp VS sp
px 대신 dp를 사용하는 이유는 기기마다 화면 밀도가 다르기 때문이다.
px(Pixel)
화면을 구성하는 실제 픽셀 다누이이다.
예를 들어 width = 100px 이라면 실제 화면의 픽셀 100개를 의미한다. 여기서 문제는 같은 100px이라도 기기마다 보이는 크기가 다르다. 왜냐하면 화면마다 같은 공간 안에 픽셀의 개수가 다르기 때문이다.
dp(Density Independent Pixel)
화면 밀도에 대한 독립적인 단위이며 안드로이드가 자동으로 px로 변환해준다.
예를 들어 Modifer.width(100.dp)라고 하면 같은 크기로 보이도록 변환된다.
sp(Scale - Independent Pixel)
sp는 텍스트 크기를 표현하기 위한 단위이다. dp와 비슷하지만 한 가지 차이가 있다. 사용자가 설정한 글자 크기를 반영한다.
예를 들면 사용자가 환경 설정에서 글자 크기를 변경하면 dp로 설정했을 때는 텍스트 크기가 변하지 않지만 sp로 설정한다면 크기가 변경된다.
window Size Class란
Android에서 다양한 기기와 폴더블 환경에서 기기 종류가 아닌 현재 앱이 사용하고 있는 창(window)의 크기를 기준으로 UI를 분기하기 위한 표준이다.
종류
클래스 Width 기종
| Compact | < 600dp | 일반 스마트폰 |
| Medium | 600dp ~ 840dp | 작은 태블릿 |
| Expanded | ≥ 840dp | 태블릿, 폴더블 |
val windowSizeClass = currentWindowAdaptiveInfo()
.windowSizeClass
when (windowSizeClass.windowWidthSizeClass) {
WindowWidthSizeClass.COMPACT -> {
PhoneScreen()
}
WindowWidthSizeClass.MEDIUM -> {
TabletScreen()
}
WindowWidthSizeClass.EXPANDED -> {
TabletDetailScreen()
}
}
COMPACT, MEDIUM, EXPANDED는 enum 클래스이다.
'안드로이드' 카테고리의 다른 글
| FragmentTransaction과 State Loss (0) | 2026.05.26 |
|---|---|
| OpenGL VS YUV Buffer 조작 (1) | 2026.03.03 |
| CameraX VS Camera2 (0) | 2026.02.22 |
| Coil (0) | 2026.01.04 |
| XML VS Jetpack Compose (0) | 2026.01.01 |
