블로그 이미지
인간은 자신이 이해하지 못하는 것을 경멸하는 버릇이 있다. 셜병장

카테고리

분류 전체보기 (37)
주절주절 (1)
누리다 (1)
생활의 발견 (0)
Memory (1)
내 몸의 물 (8)
Developments (14)
Attraction (9)
Father Time (2)
Play Ground (1)
Total
Today
Yesterday

  • 다중 지원 스크린

안드로이드는 다양한 화면의 크기와 pixcel을 제공하는 장치에서 실행된다.

이에 시스템은 다른 화면 구성을 위한 UI설계 최적화의 크기 밀도등에 대한 API를 제공한다.


  • Screen

-. Screen size

화면의 대각선으로 측정한 실제 물리적크기


-. Screen density

화면의 물리적인 영역에서 픽셀의 양. 일반적으로 dpi(dots per inch)라 한다.


-. Resolution

화면의 물리적인 pixel읠 총 개수이다. 


-. Density-independent pixel (dp)

UI layout을 정의할때 layout의 크기 및 위치를 표현하기 위해 사용해야 하는 단위이다.

기준 밀도는 160 dpi(medium) 이며 이는 1dp가 1px이기 때문이다.

이를 토대로 계산시 화면 pixel 단위의 변환은 pixel = dp*(dpi/160) 이다.

반대로 dp를 계산한다면 dp=pixel/(dpi/160)이 된다.


예를 들어 WVGA의 경우

1dpi에 대한 pixel 값을 구하려면 480*(1/160) 이므로 1dpi는 3 pixel이 된다.


-. Android 4.2 기준 (http://developer.android.com/tools/revisions/platforms.html)


 Nexus 7 (7.3", 800 x 1280, Large tvdpi screen)

Galaxy Nexus (4.7", 720 x 1280, Normal xhdpi screen)

Nexus S (4.0", 480 x 800, Normal hdpi screen)

Nexus One (3.7", 480 x 720, Normal hdpi screen)

10.1" WXGA Tablet (1280 x 800, X-Large mdpi screen)

7.0" WSVGA Tablet (1024 x 600, Large mdpi screen)

5.4" FWVGA (480 x 854, Large mdpi screen)

5.1" WVGA (480 x 800, Large mdpi screen)

4.7" WXGA (1280 x 720, Normal xhdpi screen)

4.65" 720p (720 x 1280, Normal xhdpi screen)

4.0" WVGA (480 x 800, Normal hdpi screen)

3.7" WVGA (480 x 800, Normal hdpi screen)

3.7" FWVGA slider (480 x 854, Normal hdpi screen)

3.4" WQVGA (240 x 432, Normal ldpi screen)

3.3" WQVGA (240 x 400, Normal ldpi screen)

3.2" QVGA ADP2 (320 x 480, Normal mdpi screen)

3.2" HVGA slider ADP1 (320 x 480, Normal mdpi screen)

2.7" QVGA slider (240 x 320, Small ldpi screen)

2.7" QVGA (240 x 320, Small ldpi screen)


  • Density

 ldpi

  low-density screens ~120dpi

 mdpi 

 medium-density screens ~160dpi (일반적으로 baseline이다)

 hdpi 

 high-density screens ~240dpi

 xhdpi 

 extra high-density sreens ~320dpi

 nodpi 

 독립적인 dpi로 device에 일치하고 싶지 않을때 사용한다.

 tvdpi 

 mdpi와 hdpi의 사이로 약 213dpi정도이다. tvdpi는 일반적인 dpi로 간주되지 않으며 이름 그대로 tv을 위해 만들어 놓은것으로 일반적인 app에서는 대체로 사용되지 않는다.

tvdpi를 사용할 경우 size는 1.33*mdpi로 생각해야한다. 예를 들면 mdpi화면에 대한 100px X100px 이미지의 경우 tvdpi는 133px X 133px로 해야한다.

 xxhdpi 

 extra high-density screes 에서 extra가 하나 더 붙은거로 ~480dpi


  • new size qualifiers

android 3.2부터 제공된 것으로 기존에는 device의 size 및 pixel만 알면 사용이 가능하였는데 개발측면에서 더 폭넓게 resource size를 사용하도록 만든 개념으로 이해된다. 

android developer 사이트에서 대략적인 설명이 되어있는데 잘이해가 가지 않는다...;;


-. smallestWidth

sw은 smallestWidth로 가로/세로중 좁은쪽을 말한다. 이는 고정화면크기 특성이며 화면의 방향에 따라 변경되진 않는다.

sw320dp-hdpi 와같이 resource를 지정시 사용된다.


예로 320dpi (1280 x 720, Normal xhdpi screen) 를 가진 device가 있다고 하면 320dpi에 1280 x 720이므로 

320dpi : 720 px = 160dpi : x 이므로 방정식으로 계산하면 x 값은 360dp 

즉, 해당 resource는 sw360dp-xhdpi의 폴더가 적용된다. 

여기서 주의할 점은 320dpi는 단말의 정확한 dpi가 아닌 build시 고정된 값으로 된다. 이 값은 [ro.sf.lcd_density]에 정의되어있다.


참조 : http://developer.android.com/guide/practices/screens_support.html


Posted by 셜병장
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함