2022년 10월 16일 일요일

dp, dip, dpi, sp, px 이해하기

dp, dip, dpi, sp, px 이해하기

dp, dip, dpi, sp, px 이해하기

처음 앱개발하는 사람입장이라면 저것들 특히, dp,sp와 px의 관계를 이해하기가 조금 어려울지도 모르겠네요.

정리해 보았습니다.

  • dip: Density Independent Pixels의 약어.
    • 160dpi 기준, 1dp=1px ( 안드로이드에서는 mdpi )
    • 320dpi 기준, 1dp=2px ( 안드로이드에서는 xhdpi )
  • dp: dip과 동일
  • dpi: 화면 픽셀 밀도의 단위로 "dot per inch"의 약자
  • px: 픽셀, 물리적 절대 단위(즉, 실제 모니터상의 화소)
  • sp: Scale-Independent Pixels의 약어로, 텍스트 크기 기본 설정에 따라 자동으로 크기를 조정할 수 있습니다. Google에서는 12sp 이상의 크기를 사용할 것을 권장하며 일반적으로 12sp, 14sp, 18sp, 22sp를 사용할 수 있으며 홀수 및 소수는 사용하지 않는 것이 가장 좋습니다.

mdpi, hdpi, xdpi, xxdpi, xxxdpi란? 계산하고 구별하는 방법은?

Google의 공식 개발 문서에는 mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi=2:3:4:6:8의 크기 비율이 조정되어 있다고 설명되어 있습니다. 예를 들어 아이콘의 크기는 48×48dp입니다. 즉, mdpi에서 실제 크기는 48×48px이고, hdpi 픽셀 밀도에서 실제 크기는 mdpi의 1.5배인 72×72px입니다.

빠르게 계산하고자 할때는 아래의 사이트를 이용하세요.

https://www.pixplicity.com/dp-px-converter

Android Kotlin 에서 사용은 이렇게.

fun convertDpToPixel(context: Context, dp: Int): Int {  
    val density = context.applicationContext.resources.displayMetrics.density  
  return Math.round(dp.toFloat() * density)  
}

fun convertPixelToDp(context: Context, px: Int ): Float {

val metrics = context.applicationContext.resources.displayMetrics.density  

return px / density

}

0 comments:

댓글 쓰기