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번의 방법을 사용하는 편이 좋다고 생각한다.
반응형