Polyglot's language & programming story.

CustomView #3 자바코드에서 논리적 단위 받아내서 사용하기. 본문

Programming/AndroidProgramming

CustomView #3 자바코드에서 논리적 단위 받아내서 사용하기.

Polyglot 2018. 6. 20. 14:45

안드로이드에서는 dp 단위를 사용합니다. dp단위는 기기의 해상도에 따라서 픽셀(pixel)값이 달라집니다.


자바코드에서는 pixel 단위 밖에 사용하지 않습니다 스마트폰 크기에 따라서 커스텀 뷰의 크기를 달리 주고 싶다면. 논리적 단위를 받아내서 커스텀 뷰의 크기를 조절해야 합니다. 


논리적 단위를 받아서 사용하는 방법은 2가지가 있습니다.


1. DisplayMetrics 객체를 이용해서 스마트폰의 크기 정보를 얻고 크기 계산하는 방법

2. 리소스에 크기를 등록해 그 값을 얻어서 사용하는 방법


이 있습니다. 그럼 각각을 알아보도록 하겠습니다.


1.DisplayMetrics 객체를 이용해서 스마트폰의 크기 정보를 얻고 크기를 계산하는 방법


m 객체를 얻고 (m.density * 원하는 값) 계산해서 원하는 값을 dp 단위로 표현이 가능합니다.

1
2
DisplayMetrics m = getResouce().getDisplayMetrics();
int width = m.density * 10;   // 10dp

java code

2.리소스에 크기를 등록해 그 값을 얻어서 사용하는 방법


Value 폴더에 dimen.xml파일을 만들고 

1
2
3
<resource>
<dimen name="strokeWidth">15dp</dimen>
</resource>

dimen.xml


1
int strokeWidth = context.getResource().getDimensionPixelSize(R.dimen.strokeWidth);
java.code

Context.getResouce().getDimensionPixelSize(R.dimen.strokeWidth); 받아서 사용이 가능하다.


Comments