pre-scaling
- 안드로이드에서 view 를 생성할 때, resource 가 연결되어 있다면 해당 resolution ( or density ) 에 맞는 resource folder 를 access 해서 resource 를 가져오게 됩니다. 이 때 현재 단말에 딱 맞는 resource folder 가 없다면 alternative 선택을 하게 되는데 이 경우에는 scale 이 필요하게 되죠. 이렇게 best match 가 아닌 alternative match 의 경우 resource 를 scale 하는 것을 pre-scaling 이라 합니다.
auto-scaling
- 이 녀석은 pre-scaling 의 옵션을 껐을 때 작동하는 녀석입니다. pre-scaling 과 다르게 view 각각에 대한 resource 를 scale 하는 것이 아니라, 단말에 뻥을 쳐서 view 전체를 그린 후, 전체화면을 스케일을 하는 것입니다. 예를 들어 실제 단말은 480x800 mdpi 인데, 해당 앱은 320x400 ldpi 의 resource 들만 가지고 있는 경우가 있을 수 있습니다. 이 경우에 ldpi 에 있는 resource 들을 scale 하여 component 로 그리는 것이 아니라, 단말한테, "너는 지금 320x400 ldpi 단말이야. 그러니깐 그 사이즈로 그리자~" 라고 하여 해당 사이즈로 그리게 합니다. 이 때 그리는 것은 머리속으로 그리는 것으로 실제 디스플레이에 보여줄 때는 320x400 ldpi 기준으로 그린 그림을 scale 해서 보여줍니다. 이걸 drawing time 에 scale한다고 표현을 하더군요. 이런 방식을 auto-scaling 이라 합니다. 이 방식은 어떤 결과를 초래할 지 예측하기가 어려워 비추되고 있는 방식입니다. 성능적으로는 이득이 있다고는 하지만.. 안드로이드 3.0 Honey Comb 부터는 Hardware acceleration 이 도입되어 성능 이득도 거의 차이가 없다고 하네요.
compatible mode
- 이 녀석은 주로 폰용 앱을 타블렛에서 실행할 때 발생합니다. large screen 을 support 하지 않는 경우에 발생하는데, 원래 폰에서 작동하는 screen 사이즈로 타블렛에서 보여줍니다. 그래서 많은 테두리부는 검은색으로 나오고, 해당 앱은 센터에서 조그맣게 실행되는 형태인데, 최악의 case 로 볼 수 있겠습니다.
결론적으로 안드로이드의 scale 관련된 용어와 옵션은 위와 같이 크게 3개로 구분할 수 있지만, 가장 권장되는 방식은 pre-scaling 방식입니다. pre-scaling 을 적용하는 앱을 만들기 위해서는 아래 글이 많이 도움이 될 것 같군요.
'프로그래밍 놀이터 > 안드로이드, Java' 카테고리의 다른 글
[android] http reqeust ( HttpPost, HttpGet ) 에 cookie 넣기 (2) | 2012.10.13 |
---|---|
[android] 왜 ICS부터는 virtual navigation controls로 바뀌었는가? (software back, home, menu, recent ) (0) | 2012.10.13 |
[android/안드로이드] Supporting Multiple Screens ( 여러 스크린 지원 ) (0) | 2012.10.06 |
[android/안드로이드] 세계 android 단말 통계 ( version, screen size, density ) (0) | 2012.10.06 |
[android/안드로이드] Handler 의 내부적 진실. (4) | 2012.10.05 |
댓글