구글링을 해서 소스코드를 검색하다 보면 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 |