본문 바로가기
호구지책/Java/Android

[안드로이드] dp 를 px 변환하기

by 하늘의흐름 2016. 6. 13.
반응형

코드를 이용해서 변환하는 방법이 있긴 하지만,

관리측면에서보면 깔끔하지 못한 것 같다.


깔끔하게 관리하는 측면에서 한가지 팁을 소개한다.


dimensions.xml 을 활용하자.

여기에는 dp 값을 저장해서

소스코드로 불러와서 쓸 수 있게 되어있다.


이걸 쓰면 핸드폰 규격에 맞게 안드로이드에서 

자동으로 변환해주므로,

굳이 코드를 이용해서 변환을 해줄 필요가 없다.


dimensions.xml이 없다면 res>values 밑에 파일을 새로 생성해서

사용하면 된다.


dimensions.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="length">20dip</dimen>
<dimen name="cart_p_ea_margin">4dp</dimen>
<dimen name="cart_p_text_margin">8dp</dimen>
<dimen name="cart_p_ea_text_margin">16dp</dimen>
<dimen name="edit_top_margin">2dp</dimen>
<dimen name="btn_ea_width">32dp</dimen>
<dimen name="btn_ea_height">48dp</dimen>
<dimen name="edit_ea_width_height">38dp</dimen>
<dimen name="cart_group_height">100dp</dimen>
</resources>

dip, dp는 동일한 것으로

둘 중 어느 것으로 해도 상관 없다.



소스 코드에는 다음과 같은 형식으로 불러온다.


(int)형변환이 없이 불러오게 되면 float타입으로

리턴이 되기 때문에 int형변환이 필요하다.


int cart_p_ea_margin = (int)getResources().getDimension(R.dimen.cart_p_ea_margin);


이렇게 사용하면 변환하는 코드를 쓸 필요없이

변환이슈가 해결된다.



반응형

댓글