본문 바로가기
프로그래밍/Android

Android 해상도 변경시 화면비율로 dp 설정하기

by CaffeLatte 2014. 2. 16.

예를 들어, xhdpi(1280x720)를 기준으로 hdpi(800x480) 해상도에 맞는 dp를 설정하고자 할 때...

xhdpi에서 width(5dp), height(10dp)의 이미지나 margin값이 있다고 가정하면,

hdpi의 width와 height의 dp를 구할 때,
1. xhdpi의 w(5dp)와 h(10dp)의 px을 구한다.
-> xhdpi(320dpi), hdpi(240dpi)이므로 dp = px*(dpi/160) = px*(320/160) = px*2
-> 1dp = 2px이므로 w(5dp) = w(10px) , h(10dp) = h(20px)
2. hdpi : xhdpi의 비율을 구한다.
-> width의 비율은 480 : 720이므로 2 : 3
-> height의 비율은 800 : 1280이므로 5 : 8
3. w(10px)과 h(20px)을 비율에 맞춰 계산한다.
-> 2 : 3 = x(미지수) : w(10px), x = 6.666...(소수 첫째짜리까지 반올림하면 6.7)
-> 5 : 8 = y(미지수) : h(20px), y = 12.5
-> 변경된 px은 w(6.7px), h(12.5px)
4. hdpi의 맞게 dp로 변환한다.
-> 1번의 공식을 참고하면 dp = px*(dpi/160) = px*(240/160) = px*1.5
-> 1dp = 1.5px이므로
-> 1(dp) : 1.5(px) = x(dp) : 6.7(px),
 w(6.7px) = w(반올림하여 4.5dp)
-> 1(dp) : 1.5(px) = x(dp) : 6.7(px), h(12.5px) = h(반올림하여 8.3dp)

따라서, xhdpi(5dp)는 hdpi(4.5dp)이고
xhdpi(10dp)는 hdpi(8.3dp)이다.

예시처럼 각각의 해상도를 기준으로 잡고 비율에 맞게 계산하여 설정해주면 된다.

 

 

ps. MFC를 이용하여 프로그램을 만들어봐야겠다.

댓글