안드로이드 이야기 (2010/04/13)

무언가 할 얘기가 많았지만 당장 생각나는 내용만 정리한다.

 

1) 인텔리제이(IntelliJ)로 이전하는 데 성공했다.

기본 키맵을 Max OS X 10.5+로 바꾸니 이클립스에 적응돼서 어색하던 부분도 대부분 해결된다. 맥에서 익숙한 단축키들이 대부분 적용되기에 쾌적하게 이용할 수 있다. Eclipse용 키맵도 제공하지만, 윈도 단축키를 기반으로 단축키가 설정되어 있어서 맥 사용자는 오히려 불편하다.

 안드로이드 개발에는 인텔리제이를 강력 추천한다.

 

2) 비율을 정확히 고정시키고 싶을 때는

자체 테이블을 그리거나 할 때 TableLayout을 사용하면 알아서 늘어나고 줄어드는 컬럼 때문에 정신건강에 좋지 않다. 이럴 때는 LinearLayout을 이용해서 android:layout_width를 0px로 변경하고, weight로 비율을 고정하면 늘어나고 줄어들지 않게 고정시킬 수 있다. 정확히 나뉜 컬럼이 필요하거나 할 때는 이 방법을 이용한다. 단, 이렇게 나뉘는 영역에는 당연하겠지만 margin이 포함되지 않으니 margin을 함부로 사용하면 어그러진다. padding을 잘 활용해야 한다.

 

  1. android:layout_width="0px"
    android:layout_height="wrap_content"
  2. android:layout_weight="0.25"

 

3) Footer를 삽입하는 가장 효과적인 방법은?

RelativeLayout으로 부모와의 관계를 지정하면 된다. 화면의 상단 부분은 무슨 레이아웃을 써도 고정시키기 어렵지 않은데, 아래부분은 LinearLayout 등으로 고정시키기 쉽지 않고 그리 권장할 만한 방식은 아니다. RelativeLayout을 절대값을 이용하는 방식과 비슷하게 생각하고 무시하면 안 된다. 개인적으로는 LinearLayout과 함께 가장 많이 사용한다.

  1. android:id="@+id/footer"
  2. android:layout_alignParentBottom="true"

 

4) Style의 활용

XML 코드에서는 아무래도 복사하고 붙여넣는 행위에 대한 죄책감이 적은데, 이것도 분명 코드의 중복이다. 그리고 HTML 엘리먼트에 스타일 속성들 넣어서 사용하면 저질스러운 행동이라고 알면서, 유달리 XML에 관대하다. 안드로이드의 XML 레이아웃은 HTML과 유사해서 CSS로 스타일을 정의하듯이 Style 파일로 관련 스타일을 관리할 수 있다.

  사실 XML에 스타일 바로 정의해서 사용하는 경우도 잦긴하다. 그래도 반복적으로 사용하는 것들은 추출해서 사용하자.

 

5) 컬렉션에 큰 자료구조 넣지 말자

모토로이나 넥서스원 급의 기기에서 아무런 문제가 없다고 해서 문제가 없는 게 아니다. 당장 에뮬레이터를 띄워서 큰 컬렉션을 사용하는 부분을 돌려보면 Out of Memory로 뻗어버리는 경우가 잦다. 모바일 기기에서 메모리에 큰 자료구조를 잡아서 사용하는 방식자체가 문제지만 자바에서 습관적으로 사용하던 방식대로 사용하면 안 된다.

 

이 글은 스프링노트에서 작성되었습니다.

신고
Trackback 0 Comment 0

안드로이드 이야기 (2010-03-22)

1) 안드로이드 개발환경으로는 IntelliJ IDEA가 좋은 것 같다.

 이클립스 플러그인 개발자로서의 자존심을 버리고 개발환경을 IntelliJ로 옮겨 왔다 (아직은 평가판으로 평가 중). 아무리 생각해도 Mac용 이클립스는 여전히 무언가 이상하고, 안드로이드 개발 환경은 이상하게 느리다. IntelliJ는 UI 디자이너를 제공하지는 않지만 어차피 만족스러운 수준이 아닌지라 XML을 편집하게 되는데, XML 편집 기능 만큼은 IntelliJ가 최고다. IntelliJ는 버전 4일 때 정도 써본 것 같은데 아직은 많이 어색하다.

  근데 이클립스나 IntelliJ나 자체 Logcat 뷰어에서는 UTF-8을 지원하지 않아서 한글이 깨진다. 당장은 adb logcat으로 보는 편이 좋다 (윈도에서는 명령 프롬프트의 인코딩을 변경해야 한다). 결과는 grep으로 원하는 정보만 잡아서 보자.

 

2) ViewFlipper로 원하는 페이지 이동하기

 Swing의 CardLayout이나 SWT의 PageBook과 비슷한 역할을 수행하는  ViewFlipper는 자칫 이전 페이지/다음 페이지 전환 밖에는 허용하지 않는 것으로 볼 수 있다. showNext()와 showPrevious()와는 다르게 setDisplayedChild()라는 이름으로 원하는 인덱스의 페이지로 이동하는 기능을 제공한다. 이름만으로는 찾기 쉽지 않다. 항상 의심되면 직접 소스를 열어서 확인해보자.

 

3) 프로그래밍적으로 TextView의 텍스트 색상 변경하기

 text.setTextColor(R.color.color1)과 같은 방식으로 색상을 변경할 수 없으니 속지 말아야 한다. text.setTextColor(getResources().getColor(R.color.color1))와 같은 방식으로 색상을 변경한다. 동적으로 색상을 변경할 필요가 없다면 프로그래밍적으로 색상 변경을 하지 않는 편이 좋다. 대신 XML에 선언적으로 정의하는 방식을 이용하자.

 

이 글은 스프링노트에서 작성되었습니다.

신고
Trackback 0 Comment 0

넥서스원과 아이폰 구입

 결론부터 말하자면 넥서스원(Nexus One)을 구입해서 곧 개통할 예정이고, 네이버 이벤트에서 아이폰(iPhone)이 당첨돼서 개통 했습니다. 10년을 사용한 번호를 바꾸고 싶지도 않았고 아이폰 외에는 그리 끌리는 스마트폰이 없어서 2G 피쳐폰을 사용하고 있었습니다. 사실 아이폰의 유혹을 뿌리치면서 맘에 드는 안드로이드폰 발매를 기다리고 있었는데 기대하지 않은 이벤트 당첨 덕분에 아이폰 사용자가 됐습니다. 넥서스원의 구입은 약간 충동적인데 당장 일에 안드로이드폰이 필요하기는 했지만 분명 다른 선택이 있었음에도 구매했습니다.

 

n1-2.jpg

넥서스원. 인증 신청 후 기기만 먼저 돌려 받은 상태로 다음 주에 개통할 예정입니다.

 

n1-1.jpg

넥서스원과 전용 독(Dock). 독에 올려두면 탁상 시계가 됩니다. 그리고 독은 블루투스를 내장하고 있는데 연결된 스피커로의 음악 재생 이외에 다른 기능은 없는 것으로 보입니다.

 

n1-4.jpg

전용 독에 올려두고 오른쪽 상단 아이콘을 꾹 눌러주면 잘때도 방해 받지 않고 시간을 확인할 수 있는 탁상 시계가 됩니다.

 

  ip-1.jpg

네이버 뮤직 이벤트로 받은 아이폰. 전화기로서의 가치보다는 3G 인터넷, GPS, 나침반, 스피커 등이 주는 편리함이 대단하네요.

 

n1-3.jpg

아이폰과 넥서스원. 아이폰 애플리케이션 개발도 탐나지만 두 기종을 모두 사용하면서 얻을 수 있는 아이디어가 더 기대됩니다.

 

아직 개통도 하지 않은 넥서스원의 사용 느낌은

  1. 기기 자체에 대해서는 꽤 만족합니다. 다만, 아래 터치 버튼이 자꾸 실수로 눌려서 불편합니다. HTC의 Desire는 이 부분을 하드웨어 버튼으로 처리했던데 그래서 기대됩니다.
  2. 구글의 서비스가 이렇게 잘 연동된다니 무섭네요. 하지만 아직 한국 사용자에게 불친절합니다. 한글화는 잘 된 편이지만 당장에 기본 연락처 애플리케이션만 봐도 A-Z까지의 목록만 제공하고 한글은 그 뒤에 붙습니다. 한국 사용자를 잘 배려한 애플리케이션을 기본 탑재한 네이버폰, 다음폰이 기대됩니다.
  3. 개인적으로는 빠른 개발폰이 생겨서 너무 좋습니다. 아이폰 애플리케이션을 만들 때는 시뮬레이터로 작업하고 폰에 올려서 확인하지만, 안드로이드 애플리케이션은 (아이폰에 비해 폰에 바로 배포하기 꽤 편하기 때문이기도 하지만) 일단 폰에 올려서 개발하고, 다양한 버전과 해상도에 대한 테스트를 에뮬레이터에서 진행한다고들 하네요. 안드로이드 에뮬레이터는 느리지만 잘 만들어서 괜찮은 게 아니라, 잘 만들었지만 너무 느려서 안 괜찮습니다.
  4. 전용 독에 올려두고 개발 폰으로 사용할 수 있었으면 하는 아쉬움. 넥서스원이 iTunes와 같은 클라이언트 프로그램이 있는 것도 아니라 블루투스를 포함하고 있어도 오디오를 듣는 것 말고는 딱히 사용할 일이 없습니다. 그 기능만 놓고보면 가격이 저렴하지는 않습니다. 사실 개발용도의 USB 디버깅 기능을 블루투스를 이용해 대체해 주기만해도 참 편할텐데 조금 아쉽네요.

 

합리적으로 생각한다면 이렇게 외국폰을 들여와 인증 받아서 사용하는 게 바람직하지는 않습니다.

  1. 일단 전혀 경제적이지 않습니다. 단말기 할부도 지원 받을 수 없고 일시불로 구입해야 합니다. 무엇보다도 30만원 중반에서 50만원이나 되는 인증 비용을 추가로 지불해야 합니다. 관련 액세서리도 구하기 쉽지 않을 수 있습니다. 당장 넥서스원 전용 독을 따로 구입하려고 해도 10만원에 가까운 비용을 지불해야 합니다.
  2. A/S를 기대할 수 없습니다. 사용하다 고장이 난 경우에도 그렇지만, 초기 제품 불량에 대해서도 구입 방법에 따라서 다르겠지만 제품 교환이 쉽지 않습니다.
  3. 그리고 제가 생각하는 가장 큰 문제로 통신사의 서비스에서 배제될 수 있습니다. 앞으로 개선될지 모르지만 현재는 SKT로 개통해도 티스토어와 MMS를 이용할 수 없습니다. 그리고 모토로이 등의 폰에서 무료로 제공할 예정인 티맵 등의 서비스도 기대하기 어렵습니다. 당장은 이렇다할 통신사의 서비스가 없지만 앞으로 각 통신사의 안드로이드 관련 서비스가 진행돼도 배제될 가능성이 큽니다.

 

그렇다고 아무런 장점도 없는 것은 아닙니다.

  1. 어느 정도 안정적인 소프트웨어 업데이트를 기대할 수 있습니다. 특히, 넥서스원의 경우 레퍼런스 폰의 성격도 가지고 있기에 하드웨어 성능이 되는 한 업데이트가 지원되리라 예상할 수 있습니다. 이런 이유로 국내 전용 모델이 아니라 외국 발매 모델의 기다리는 사람이 많다는 사실을 국내 회사들이 알아줬으면 좋겠네요.
  2. 커뮤니티의 지원을 기대할 수 있습니다. 많은 사용자를 확보한 제품의 경우 외국 커뮤니티에서의 다양한 정보, 소프트웨어 지원을 기대할 수 있습니다. 저는 가능하면 제품 그대로 사용하려고 하기에 당장은 큰 메리트가 되지 못하는데 더 이상 소프트웨어 업데이트가 공식적으로 지원되지 않는 경우에도 XDA와 같은 곳에서의 지원을 기대해볼 수 있습니다.

 

오랜만에 하는 포스팅이라 글이 길어졌는데 저 2G폰 사용하다 스마트폰 된장 됐습니다. :)

이 글은 스프링노트에서 작성되었습니다.

신고

'일상 이야기' 카테고리의 다른 글

넥서스원과 아이폰 구입  (4) 2010.03.15
눈사람을 만들다 (2009-12-27)  (0) 2009.12.28
아이맥 구입 그리고 ... (2009/11/06)  (0) 2009.12.06
낙서 (2009-08-09)  (0) 2009.12.06
울릉도 여행(2)  (0) 2009.12.06
울릉도 여행(1)  (0) 2009.12.06
Trackback 0 Comment 4
prev 1 2 3 4 ··· 19 next


티스토리 툴바