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


+ Recent posts