드로이드 개발자들에게 최근 삼성의 갤럭시 탭의 발표는 일종의 모닝콜이 될지도 모릅니다.  걱정되는 점은 이런 화면을 가진 안드로이드 기기는 처음이라는 것입니다. 그렇지만 안심할 만한 점은 대부분의 앱들이 그대로 작동한다는(사실은, 제가 해봤던 많은 것들이 아직까지는 괜찮아 보였습니다) 것이고 잠재적인 문제들은 사소해 보입니다. 이제 설명할 것들은 갤럭시탭뿐만이 아니라 이제부터 다가오는 모든 새로운 형식에서 이점을 얻기위해 하실 것들 입니다.

 

갤럭시 탭을 배워 보도록 합시다.

* 1024x600의 스크린입니다;   이때까지 어떤기기의 어떤 해상도에서도 1000 픽셀이 넘은 적은 없습니다  또 많은 분들이  대부분의 시간을 "랜드스케이프-가로" 모드인 옆으로 잡기를 원할 겁니다.

 많은 시간을  the Developers-guide discussion of supporting multiple screens 과 보내기를 권합니다. 기기의 landscape 변화가 요구되면 우리는 그것을 수정할 것입니다. 역시 이 블로그(출처) 도 최근 landscape default를 다루는데에 도움이 될 Dan Morrills One Screen Turn Deserves Another  올렸습니다.

 


 Density 가 의미하는 것

 어플을 만드실 때 스크린 밀도, 사이즈, 가로 혹은 세로모드에 따라 변하는 레이아웃과 그래픽을 제공할 수 있습니다. 분명히 이것들은 근사한 레이아웃을 디자인하거나 영리한 필터를 쓰는 것만큼 즐겁진 않습니다 :하지만  어쩔수 없습니다.

 어플을 만드실 때 스크린 밀도, 사이즈, 가로 혹은 세로모드에 따라 변하는 레이아웃과 그래픽을 제공할 수 있습니다. 분명히 이것들은 근사한 레이아웃을 디자인하거나 영리한 인텐트 필터를 쓰는 것만큼 즐겁진 않습니다 이런 면에서, 삼성은 또하나의 작은 깜작선물을 준비했습니다. : 만약 당신이 셈을  잘한다면  그 스크린은 안드로이드 기기에서 그다지 촘촘하지 않은 170 DPI를 가지고 있습니다. 그럼에도 불구하고 "hdpi"라고 불리는 데요(그리고 "넓은" 화면을 가지고 있다는데에서도). 이유는 간단합니다 더 괜찮아 보입니다.

 삼성은 만약 당신이 중간-밀도 자원(MDPI)을 이용하여 그래픽 자원을 렌더링하면 그것들은 별문제 없어 보입니다. 하지만 대부분의 넓은 사이즈의 스크린들이 결국은 버튼과 아이콘 사이의 너무  많은 빈 공간으로 빈약해 보이게 됩니다.

 고해상도에서, framework는 딱 적당할 정도로 리소스의 크기를 늘립니다.


사진찍기가 취미인 사람으로써, 사람들이 사진찍을때 조리개와 셔터스피드, ISO감도를 조정하는 것이 생각납니다. 만약에, 예를 들어서 , 춤추는 사람이 도약하는 순간을 찍기위해 빠른 셔터속도를 얻고자할때, 큰 조리개와 감도를 조정하는 것이 좋습니다. 이와 유사하게, 갤럭시 탭의 스크린은 매우 큽니다. 그래서 HDPI로 정의하는 것은 유용한  이득을 주게 됩니다.

 좋은 뉴스는 프레임워크에서 크기 변환 코드가 충분히 스마트하며, 빠르게 잘 나옵니다. 제 어플의 그래픽도 탭에서는 두드러지게 괜찮아 보입니다. 이것이 제 어플인 "라이프 세이버2"입니다.

처음은 넥서스 원, 그리고 갤럭시 탭입니다. 이 프레젠테이션을 위해 리사이즈 하였습니다. 다른 Density와 geomtries, 그리고 오직 중요한 차이점은 이 버전은 큰 사이즈의 화면에서 더 괜찮아 보인다는 것입니다.




 위에 제가 말한 것처럼 되야 할 겁니다: 당신의 그래픽을 모든 세 해상도에서 제공하는 지 확실히 하시고 , 아마도(나머지는광범위한 종류의 기기에서, 안드로이드 프레임워크 스스로가 좋은 그래픽으로 처리 할 것입니다.

 


잘못될수 있는 경우들


 
말씀드린대로, 대부분의 앱들이 이런 종류의 기기에서 곧바로 변경사항 없이 잘 작동합니다. 그러나 우리는 여러분이 만든 앱이 이상하게 보이거나 아예 에러가 날수 있는 몇몇 최악의 상황을 만나보았습니다.

   *    절대(absolute) 레이아웃 사용 : 트러블의 정석입니다..

   *    DIP(밀도 독립적 픽셀)말고 절대 [좌표] 사용.

  *     제 그룹의 멤버 중 하나가  Null Pointer Exception 오류가 두어개의 어플에 계속 일어나는 상황을 겪었습니다. 왜냐하면 Activity가 시작 될 때 화면 크기를 계산했고, 그 프레임워크가 처리하기보다 그들 자체의 자원을 로딩 했기 때문입니다.

 문제는 그분들은 1024x600스크린에 맞게 설계하지 않았단 겁니다. 만약 그들이 프레임워크로 그 일을 넘긴다면 문제는 사라질 겁니다. 아니면 적어도 그들의 모든 switch 문이 디폴트 처리를 가지고 있어야 합니다.

 

 

[구두상자]에서 탈출해라


(
역자주> 아마도 화면에 검은 테두리가 생기는 것을 말하는 것 같음)

  저는 몇가지 앱이 '박스신세'가 된 것을 발견했습니다. 화면중앙에 픽셀들이 있고, 넓은 검은색 밴드로 둘러싸여 있습니다., 작동은 잘 합니다만, 우스꽝스럽게 보입니다. 피하는 방법은 간단합니다. 이것은 targetSdkVersion 4미만일 때 발생합니다. 이 말을 해석해 보자면, HVGA만을 지원하는 이전 Cupcake 버전으로 타겟팅 되어 있다는 말입니다.

어떠한 경우에라도, 당신의 어플이 [구두상자]속에 들어가지 [않게 하려면],  [support-screen 요소를 활용하시기 바랍니다.. 이렇게 하기를 추천합니다.]

<supports-screens android:largeScreens="true"android:anyDensity="true" />

 

 (API 레벨 4 이하에서는 이 둘 속성의 기본값이 false로 되어있습니다.) 프레임워크는 생각할 수 있는 거의 모든 안드로이드 스크린에서 좋은 결과를 얻습니다.

 

테스팅

  안드로이드 기기마다 작동하는지의 여부를 따지고, 또 그 기기가 없을 때  당신의 앱이 제대로 각 기기에 대응한다는 걸 확실히 할수있는 유일한 방법은 안드로이드 에뮬레이터에서 실행하는 겁니다. 에뮬레이터 코드는 우리가 출시되었거나 출시 예정의 어떤 기기도 모델링 할 만큼 융통적입다.
                                                                                                    

 갤럭시탭의 경우 , 삼성은 당신의 쉬운 삶을 위해(역자주> ^^) 커스텀 AVD 와 스킨을 포함한 SDK 애드온을 제공할 것입니다. 위의 라이프 세이버 스크린샷을 만들기 위해 먼저 출시 된 것을 써보았습니다.

 

왜 이런 추가적인 작업이 필요합니까?


 
왜냐하면, 2010년이 지나고 나면, 안드로이드는 더 이상 폰만을 위한 것이아니고, 또 주머니에 꼭 맞아들어가는 것만을 위한것도 아니니까요. 이것을 해결하기 위해 요구되는 작은 노력은 당신의 어플이 이 새로운 기기 종류의 세계에 접속할 수 있게 한다는 점에서 큰 성공으로 보답할 겁니다.


원본 출처 : http://android-developers.blogspot.com

저작자 표시 비영리 변경 금지
신고
크리에이티브 커먼즈 라이선스
Creative Commons License
Posted by (주)라람인터랙티브


티스토리 툴바