Android

Android 화면 해상도를 고려하여 레이아웃 구성하기

클레인 2017. 11. 21.
반응형

1. Density

   화면의 가로와 세로에 걸쳐있는 픽셀들의 흩어짐 정도를 말한다. 흔히 컴퓨터의 경우 1024*768 이라는 것은 화면을 1024 개의 가로픽셀과 세로 768개의 픽셀이 화면을 나타내고 있다는 것이다. 이는 화면 크기와 상관없이 픽셀의 수치가 높을 수록 고해상도로 화면이 더 선명하게 보인다.


refers to the degree of variation of pixels across the width and height of the screen. In general, in the case of a computer, of of 1024 * 768 is that it shows the screen of 768 pixels and vertical pixels in the horizontal direction of the 1024 screen. Regardless of the size of the screen, this looks more clearly the screen in high resolution higher the number of pixels high. 



2. dip (density independent pixel)

   android 화면의 상대적 비율이라 생각하면 된다. 

   platform에 의해 가정된 기본적인 Density는 160 dpi(320x480)화면에서의 물리적 1픽셀과 동일하다.

   dp 를 설정하는 이유는 android 화면 해상도가 워낙 다양하기 때문에 개발시에 상대적인 수치를 적용함으로써 더욱 쉽게 다양한 해상도를 지원하기 위함이라 생각한다.


may be think that it is the relative proportions of the screen of android. 

Density basic that has been assumed by platform is the same as one physical pixels in 160 dpi (320x480) screen. 

The reason for setting the dp, consider for a screen resolution of android is varied too, by applying a relative number during development, and in order to support various resolutions more easily. 



안드로이드의 Screen에 대한 표는 다음과 같다.

- Resource scale limit: large, normal, small

- Resource density limit : hdpi, mdpi, ldpi



Low density (120), ldpi  

Medium density (160), mdpi

High density (240), hdpi

Small screen 

* QVGA (240x320), 2.6"-3.0" diagonal


* WVGA (480x800), 3.3"-4.0" diagonal
* FWVGA (480x854), 3.5"-4.0" diagonal

Normal screen 

* WQVGA (240x400), 3.2"-3.5" diagonal
* FWQVGA (240x432), 3.5"-3.8" diagonal

* HVGA (320x480), 3.0"-3.5" diagonal


Large screen 


* WVGA (480x800), 4.8"-5.5" diagonal
* FWVGA (480x854), 5.0"-5.8" diagonal




Platfrom은 3가지 방법으로 다른 Density에 대한 호환 방법을 지원해준다.


1. 다른 Drawable을 로딩함으로써 Density에 맞는 Pre-Scaling

   res/layout/my_layout.xml            // layout for normal screen size
   res/layout-small/my_layout.xml      // layout for small screen size
   res/layout-large/my_layout.xml      // layout for large screen size
   res/layout-large-land/my_layout.xml // layout for large screen size in landscape mode

   res/drawable-ldpi/my_icon.png       // icon image for low density
   res/drawable-mdpi/dpi/my_icon.png   // icon for medium density
   res/drawable-hdpi/my_icon.png       // icon image for high density

   res/drawable-nodpi/composite.xml    // density independent resource


2. Layout에서 dip 단위를 사용함으로 Auto-Scaling 



3. supports-screens를 이용하여 설정 여부에 따른 Auto-Scaling
   보통 여러 해상도를 지원하기 위해서 화면 구현을 할때는 dip를 쓴다.

   그러나 pixel을 사용하는 경우에도 해상도 비례하여 확장, 축소하여 그려줄 수 있다.

   중요한 것은 테스트를 해봤을 때 Medium density 기준한 화면을 High density에서 출력은 가능했으나

   High density를 기준한 화면은 Medium density로 자동 리사이즈 해주지 않는다는것이다.

   (Note that applications written for the baseline screen may need minor adjustments 

                                        before they display properly on smaller screens such as QVGA.)


3번 기능을 이용하기 위해서는 AndroidManifest.xml 에 다음과 같은 태그를 추가 해 줘야 한다.

<supports-screens
        android:largeScreens="false"
        android:normalScreens="false"
        android:smallScreens="false"        
        android:anyDensity="false"/> 


위와 같이 Density 속성을 false 로 설정해 주면 어느 해상도에서든 똑같은 크기가 출력된다. 


If set to false Density property as described above, the same size are output at any resolution. 


반응형

댓글