dip을 사용하여 개발 할 경우,
해상도에 따른 이미지의 확대/축소 비율을 유지할 수 있다.
우선 알고 있어야 하는 것은,
QVGA (240x320, low density, small screen)
WQVGA (240X400, low density, normal screen)
FWQVGA (240x432, low density, normal screen)
HVGA (320x480, medium density, normal screen)
WVGA800 (480x800, high density, normal screen)
WVGA854 (480x854, high density, normal screen)
그리고,
HVGA (320x480) = 160 dip(dp)
WVGA800 (480x800) = 240 dip(dp)
안드로이드 개발에 있어서 기준이 되는 것은 HVGA라고 보면 쉬운데,
160dp의 경우, 1dp = 1px이기 때문이다.
고해상도 단말기는 대부분 WVGA800인데 이는 240dp이고, 1dp = 1.5px이다.
dip를 사용하면 해상도에 따른 이미지 확대/축소의 비율을 유지할 수 있다고 하였다.
예를 들어, 20dp x 20dp의 이미지는,
HVGA에서 20px x 20px로 보이고, WVGA에서는 30px x 30px로 보인다는 것이다.
pix → dip 변환 : dips = pixels * (160 / density)
dip → pix 변환 : pixels = dips * (density / 160)
그런데 sp나 dp는 xml에서만 의미가 있지, 코드상에서는 오직 px만 유효하다.
따라서 코드상에서도 가급적 단위를 변환해줘야 한다.
px = (dp * getContext().getResources().getDisplayMetrics().density + 0.5f);
*sp : Scale Independent Pixel로 dp와 비슷하지만 화면 해상도 뿐만 아니라
사용자 설정 폰트 크기도 조절한다. 따라서 폰트에서 사용하는 것이다.
'프로그래밍 > 안드로이드' 카테고리의 다른 글
[안드로이드 팁] 안드로이드폰에서 마켓 링크걸기 (0) | 2011.05.19 |
---|---|
[안드로이드 팁] dip 에서 pixel로 pixel 에서 dip로 변환하는 클래스 (0) | 2011.05.19 |
[안드로이드 팁] 다양한 스크린 사이즈에서의 UI 처리(안드로이드펍 에서 펌] (0) | 2011.05.19 |
[안드로이드 팁] 해당 Activity 에서 볼륨키로 사운드 키기 조절하기 (0) | 2011.05.19 |
[안드로이드 팁] Home 키를 누른 효과와 동일한 기능 구현 (0) | 2011.05.19 |
[안드로이드 팁] drawText로 그려지는 Text의 폭과 높이 알아내기 (0) | 2011.01.20 |
안드로이드 가로 키패드 팁 (0) | 2011.01.20 |
안드로이드 이클립스 속도향상 [펌자료] (0) | 2011.01.20 |
[안드로이드] 갤럭시S soundpool 2번 재생 (0) | 2011.01.04 |