=================================
=================================
=================================
출처:
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
=================================
=================================
=================================
'프로그래밍 관련 > 프로그래밍 관련팁' 카테고리의 다른 글
struct 초기화 구성~ (0) | 2011.03.29 |
---|---|
double로된 시간값 바꾸기 COleDateTime (0) | 2011.03.29 |
윈도우 2008 에러발생시 복구 모드로 회복하기(복구모드 백업시 가능) (0) | 2011.02.28 |
델파이와 C 비교 (0) | 2011.02.15 |
게임 프레임 관련gamza.net : 가변 프레임율이 지원되는 FrameSkip (0) | 2011.02.07 |
댓글 영역