dp를 px로 바꾸는 3가지 방법에대해 알아봅시다.
방법1. Java에서 제공하는 메소드를 사용해서 계산
방법2. density(밀도) 값을 가져와서 계산
density(밀도)란 화면안에 얼마나 많은 pixel(픽셀)들이 있는가를 말한다.
안드로이드에서는 밀도에따라 high, mediaum, low 3가지 분류로 나누게되는데 밀도가 높을수록 같은 넓이의 스크린안에 많은 픽셀들이 존재한다.
방법3. demens.xml 파일에 있는 dp값을 불러와서 계산
* 3번째 방법은 res/values/demens.xml 파일안에 아래 리소스가 정의되어있어야 합니다.
<resources>1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | float dp = 25; //방법1 int pixels1 = (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, dp, getResources().getDisplayMetrics()); //방법2 DisplayMetrics metrics = getResources().getDisplayMetrics(); float fpixels = metrics.density * dp; int pixels2 = (int) (fpixels + 0.5f); //방법3 float pixels3 = getResources().getDimensionPixelSize(R.dimen.dip); Log.e("functionPixel",pixels1+""); Log.e("metricsPixel",pixels2+""); Log.e("diemPixel",pixels3+""); |
SSISO Community