Uing? Uing!!

[안드로이드 팁] dp to px 변환하는 방법 본문

Android

[안드로이드 팁] dp to px 변환하는 방법

Uing!! 2020. 12. 13. 23:42
반응형

dp to px

안드로이드에서 크기를 다루다 보면 Dp(Density-Independent Pixel)에서 px(pixel)로 변환해 사용해야 하는 경우가 있다.

dp에서 px로 변화하는 방법으로는 두 가지가 있다.

1. 전역 함수 정의하기

아래와 같은 dp2px 함수를 UIUtil 등의 object 안에 정의하거나, 또는 그냥 전역 함수로 정의하여 사용할 수 있다.

fun dp2px(dp: Float, context: Context) = TypedValue.applyDimension(
    TypedValue.COMPLEX_UNIT_DIP, dp, context.resources.displayMetrics)
val px = dp2px(dp, context)

2. Resources.getDimensionPixelSize() 사용하기

이 방법은 사용할 dimen값들을 미리 values > dimens.xml 등의 파일을 생성해 저장해 놓고,

Resources.getDimensionPixelSize(리소스 id)로 변환해 가져오는 방식이다.

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <dimen name="height">100</dimen>
</resources>
val px = resources.getDimensionPixelSize(R.dimen.height)

더 나은 방법은?

개인적인 의견으로는 dimen값이 특정 요소들의 height나 width값이나 그리드 간 간격과 같이,

어딘가에서 반복적으로 사용되는 값이라면 dimen으로 가지고 있는 편이 낫다고 생각한다.

재사용되는 값은 여러 곳에서 저장된 리소스를 참조하는 편이 나중에 한 번에 수정하기에 용이하기 때문이다.

따라서 반복되는 값이라면 2번의 방법을 사용하는 편이 좋다고 생각한다.

 

반응형
Comments