상세 컨텐츠

본문 제목

해상도 독립적인 UI 만들기

프로그래밍 관련/프로그래밍 관련팁

by AlrepondTech 2011. 3. 15. 11:04

본문

반응형

 

 

 

 

 

=================================

=================================

=================================

 

 

 

 

 

출처: 

http://pheadra.tistory.com/181?srchid=BR1http%3A%2F%2Fpheadra.tistory.com%2F181

1. 안드로이드의 다양한 해상도

-       QVGA(Quarter VGA, 240 X 320) : HTC Taboo, 엑시페리아 X10 MINI-       HVGA(Half VGA, 320 X 480) : 안드로원, HTC G1-       WVGA(Wide VGA, 480 X 800) : Galaxy Series, Nexus One, 엑스페리아x1-       FWVGA(Full Wide VGA, 480 X 854) : 모토로이모토쿼티모토글램엑스페리아X10-       WQVGA(Wide Quarter VGA, 240 X 400)-       FWQVGA(Full Wide Quarter VGA, 320 X 432)

    *   VGA(Video Graphics Array, 640 X 480)

 

2. Nomal Screen 기준 density 분류

 -   Low density, ldpi (120 dpi) : WQVGA, FWQVGA

-       Medium density, mdpi (160 dpi) : HVGA-       High density, hdpi (240 dpi) : WVGA, FWVGA

      QVGA(Low density, 120dpi, Small Screen)

 

3. 화면 독립적인 UI를 배치하는 가장 좋은 방법

-       레이아웃 디자인시에는 HVGA 기준 스크린 사이즈를 중심으로 dip단위만을 사용해서 디자인합니다. 320 * 480화면 기준으로 들어갈 이미지나 UI 요소들 각각의 가로 사이즈를 px로 계산한 후 코딩시에는 그 값의 단위를 dip로만 입력하면 됩니다.-       AbsoluteLayout을 사용하지 않습니다즉 화면의 절대 좌표 보다는 상대 좌표를 사용한다.-       Bitmap  HDPI 기준으로 만듭니다그래야 자동으로 크기가 조정 되더라도 보기에 좋습니다, HVGA를 기준으로 계산했을 때 100 * 100이미지가 필요하다면 HDPI 기준으로 크기의 1.5배인 150*150 크기로 실 이미지를 제작하면 됩니다만일여력이 된다면 hdpi  mdpi 기준으로 각각 만드는 것도 나쁘지 않습니다위에서 언급했듯이 성능에 유리합니다.-       각 장치별로 레이아웃 및 이미지를 모두 별도로 만들어서 세밀하게 조정할 수도 있지만이런 경우 관리가 힘듭니다가급적 레이아웃과 이미지를 적게 사용해서 통일된 UI를 구성하는 것이 좋습니다.-       XML layout 파일에 wrap_content, fill_parent 를 주로 쓰고 px 단위는 dip 단위로 바꾼다.

 

4. 다양한 해상도를 지원하는 방법

1. Pre-Scaling (보통 Bitmap 이미지 처리시에 사용)

- Pre-Scaling은 로딩시점에 크기를 조절합니다. CPU에 이득이 있다고 알려져 있습니다.Pre-Scaling은 폰의 Density를 기준으로 동일한 dpi 디렉토리에 지정된 리소스를 로딩하며 이때는 마우런 크기 변환없이 보여줍니다폰이 hpi dentisy라면 res/drawable-hdpi 디렉토리 하위의 리소스를 먼저 찾아서 있다면 아무런 크기 변환없이 그대로 보여주게 됩니다만일매칭된느 리소스가 없다면 디폴트 리소스(baseline)를 로딩하고 로딩시에 적합한 density로 크기 변환을 합니다예를 들어 res/drawable-mdpi/ 100*100 아이콘만 존재한다고 할 때 만일 폰의 사양이 hdpi라면 안드로이드는 drawable-mdpi 하위의 아이콘을 읽을 때 자동으로 크기를 확대해서 150 * 150 bitmap을 만듭니다반대로 drawable-hdpi/  150*150아이콘만 존재할 때 mdpi 폰에서 읽으면 자동으로 100*100 아이콘으로 크기를 변환합니다. Drawable-hdpi drawable-mdpi에 모두 이미지가 존재한다면 별도의 스케일 변환 작업이 필요없으니 좀더 성능에 유리합니다.

 

2. Auto-scalling(pixel dimenstions and coordinates)

- Auto-scalling은 그리는 시점에 크기를 조절합니다메모리에 이득이 있다고 알려져 있습니다주로 Pixel좌표, pixel Dimesion , Application에서 사용된 Pixel 수식 등에 적용되며리소스가 아닌 웹이나 SD카드에서 Bitmap 데이터를 가져왔을 때도 적용됩니다쉽게 예기하면 App에서 (10, 10)에서 (100, 100) 좌표로 4각형을 기리도록 구현햇다면 High-Density(240dpi) 화면을 가진 Device에서는 그리는 시점에 자동으로 스케일을 변환해서 (15, 15) (150, 150)좌표에 사각형을 그리게 된다.


 

용어정리

 

1. 스크린 사이즈(Screen Size)

-       스크린 사이즈는 스크린의 대각선 크기를 재어지는 물리적인 크기를 나타낸다안드로이드는 스크린 사이즈를 크게 3가지로 분류하는 데 large, normal, small로 나눈다.

 

   2. 가로세로 비(Aspect ratio)

-   가로세로 비는 스크린의 물리적인 넓이와 넓이의 비율로 결정된다안드로이드는 가로세로 비를 long notlong으로 나눈다.

 

   3. 해상도 (Resolution)

-   스크린이 가지고 있는 전체 픽셀의 수해상도는 종종 넓이 x 높이로 표현되지만 해상도가 특정 가로-세로 비를 의미하지는 않는다안드로이드에서는 해상도를 직접 처리하지 않는다.

 

    4. 밀도 (Density)

    -   스크린 해상도를 기반으로 물리적인 넓이와 높이 안에 얼마나 많은 픽셀이 들어있는가를 나타낸다. Lower density의 스크린에서는 같은 넓이와 높이 안에 더 적은 수의 픽셀이 있고, higher density의 스크린에서는 같은 넓이와 높이 안에 더 많은 수의 픽셀이 있다안드로이드는 밀도를 high, medium, low 세가지 분류로 나눈다플랫폼에서는 실제 스크린 밀도에 맞게 리소스 들의 사이즈를 조정한다.

 

*  안드로이드 기본 스크린 (Baseline Screen)-       HVGA, Normal Screen, Medium density
 
Posted by 파이드라

 

 

 

=================================

=================================

=================================

 

 

반응형


관련글 더보기

댓글 영역