구글링을 해서 소스코드를 검색하다 보면 StackOverflow 사이트에 괜찮은 내용이 꽤나 많다.
레퍼런스를 보는 것도 괜찮지만, 아무래도 사용자들의 의견이 오간 곳이기도 하니 질도 좋고 평가도 되어있다.
// 14dp를 픽셀 단위로 변환, 14에는 원하는 dp를 넣으면 됨. Resources r = getResources(); float px = TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 14, r.getDisplayMetrics());
다른 방법은
/** * This method convets dp unit to equivalent device specific value in pixels. * * @param dp A value in dp(Device independent pixels) unit. Which we need to convert into pixels * @param context Context to get resources and device specific display metrics * @return A float value to represent Pixels equivalent to dp according to device */ public static float convertDpToPixel(float dp,Context context){ Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float px = dp * (metrics.densityDpi/160f); return px; } /** * This method converts device specific pixels to device independent pixels. * * @param px A value in px (pixels) unit. Which we need to convert into db * @param context Context to get resources and device specific display metrics * @return A float value to represent db equivalent to px value */ public static float convertPixelsToDp(float px,Context context){ Resources resources = context.getResources(); DisplayMetrics metrics = resources.getDisplayMetrics(); float dp = px / (metrics.densityDpi / 160f); return dp; }
어느 블로그에서 필터링 없이 사용했는데 동작하지 않던 소스..
private static final float DEFAULT_HDIP_DENSITY_SCALE = 1.5f; /** * 픽셀단위를 현재 디스플레이 화면에 비례한 크기로 반환합니다. * * @param pixel * 픽셀 * @return 변환된 값 (DP) */ public int DPFromPixel(int pixel) { float scale = getResources().getDisplayMetrics().density; return (int) (pixel / DEFAULT_HDIP_DENSITY_SCALE * scale); } /** * 현재 디스플레이 화면에 비례한 DP단위를 픽셀 크기로 반환합니다. * * @param DP * 픽셀 * @return 변환된 값 (pixel) */ public int pixelFromDP(int DP) { float scale = getResources().getDisplayMetrics().density; return (int) (DP / scale * DEFAULT_HDIP_DENSITY_SCALE); }
'밤을 지새다 > Android' 카테고리의 다른 글
XML 레이아웃 코드 재사용성 높이기 (0) | 2012.05.30 |
---|---|
액티비티 시작 후 키보드 감추기 (1) | 2012.04.10 |
NDEF Text Record Type Definition (0) | 2011.08.17 |
[NFC] NDEF 메시지를 읽는 액티비티 만들기 - 작성 중 (0) | 2011.08.16 |
NFC Data Exchange Format - 작성 중 (0) | 2011.08.14 |