초보분들을 위한 팁입니다.
처음 시작할때 dp의 개념이 없어서 고생하던 생각을 하며 썻습니다. emoticon

dp (dip, density independent pixel) 은 안드로이드에서 여러 화면 크기를 서포트 해주기 위해서 만든 유닛입니다.
만약 여러종류의 화면에서 내가 만든 레이아웃이 제대로 보이길 원한다면 dp를 써서 화면을 만드는 것이 좋습니다.

우선 주의할 것은 안드로이드는 160dpi(mdpi)를 기본으로 생각한다는 것입니다.
그래서 만약 480 x 320 이면서 160dpi LCD가 있다면 dp로 480 x 320이 됩니다.
만약 480 x 800 에 160dpi LCD라면 dp로도 480 x 800 이겟죠

하지만 보통 480 x 800 LCD들은 240dpi (hdpi) 의 density를 가지고 태어났습니다.
이 스크린을 dp로 나타낸다면 320 x 533 (480 / 1.5, 800 / 1.5) 이 됩니다.
식으로 따지면
dp = pixel / (density / 160)
입니다.

dp로 레이아웃을 잡을때 버튼을 4개 만들고 LinearLayout (horizontal)에 넣은뒤 
width를 80dp (80*4 = 320)로 잡으면 4개가 같은 넓이의 버튼이 됩니다.
하지만 480이라고 생각하고 120dp 라고 넓이를 잡으면 오른쪽 1개 버튼은 화면을 지나서 보이게 됩니다.

그렇다면 코드상에서 dp를 pixel로 바꾸려면 어떻게 해야할까요?
pixel = dp * (density / 160)
이같은 식을 이용하면 됩니다.

여기서 나의 density를 알기 위해서는 다음과 같이 WindowManager를 쓰면 됩니다.

DisplayMetrics outMetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(outMetrics);
outMetrics.densityDpi 

여기서 outMetrics.density 라는 변수가 있는데 이것은 (density / 160) 의 결과 값이 들어 있습니다.
그러므로 식은 
pixel = dp * outMetrics.density 
가 되겟죠.

여기서 코드상에 dp를 pixel로 변한하는 식이 필요한 이유는,
코드상에서는 dp를 이용해서 뷰의 크기를 바꾸거나 할 수 없기 때문입니다.