간단한 기술 서적을 읽고 내용을 공유합니다.

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

제목: 스마트폰과 태블릿 호환을 위한 안드로이드 앱 프로그래밍

저자: 고강태

출판사: 한빛미디어

스마트폰과 태블릿 호환을 위한 안드로이드 앱 프로그래밍

이 책은 eBook, Free DRM  형태로  발행된 책으로 아래 사이트에서 구입할 수 있다.

http://bit.ly/SQIFc6

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~


[도입 글]

최근 앱을 개발하면서 노이로제 처럼 다가오는 것이 멀티 해상도 지원이다.

그냥 480x800 해상도만 개발하고 앱을 출시하까해도 뭔가 캥기는 것이

최신 스마트폰들이 고행도를 지원하기 때문이다.

더욱이 구글에서 내놓은 넥서스 7과 같이 태블릿도 다양한 형태로 출시되고 있기에

멀티 해상도에 대한 지원을 간과할 수 없는 부분이 되고 있다.


그래서 개발 초기부터 멀티 해상도를 위한 레이아웃이나 이미지 컷을 준비하고

마지막에 레이아웃별로 포팅 작업을 하게된다...


이런 시점에 이 책은 한번 정도 주의 깊게 읽어볼 필요가 있다.

이런 멀티해상도와 태블릿용과 호환되는 앱을 개발하기 위해서 가추어야 할 것을 핵심만 요약해서 알려주기에 좋다. 

1부에서는 스마트폰 앱과 태블릿 앱 개발의 차이점

2부에서는 태블릿 앱 개발을 위한 안드로이드 프로그래밍

3부에서는 스마트폰과 태블릿 호환 앱 개발


목차 내용을 보다시피, 내용이 상당히 깔끔하다.

역사, 필요성등 군더더기가 없이 필요한 내용을 바로 볼 수 있다.

이것은 한빛 미니어가 내 세우는 eBook에 특징이라고 한다. 

500페이지의 내용 대신 핵심만 들어있는 100페이지의 책..

이런 점은 잘 선택한 편집 방향이라고 생각한다. 


이 책은 스마트폰과 태블릿의 호환성 관점에서 글을 기록하지만,

최신 안드로이드 OS가 4.0으로 어찌보면 최신 OS가 요구하는 개발방식을 

사용하는 안드로이드 개발을 소개한다고 봐도 될 듯하다.

그러면서 구형 OS에서 최신 기술을 적용하는 방법을 소개하는 것과 같은 개념으로

인식해도 되는 것이다. 


[책을 구체적으로 들여다 보자]

책의 내용을 보려면 목차를 보는 것이 빠르다 

목차는 다음과 같다.


1부 스마트폰 앱과 태블릿 앱 개발의 차이점

0 1 태블릿 앱 개발의 필요성 2

0 2 다양한 단말기에 호환 가능한 앱 개발 3

2.1 태블릿 앱 개발 시 고려할 사항 3

2.1.1 안드로이드가 지원하는 화면 크기 5

2.1.2 레이아웃 최적화를 위한 기본적인 프로그래밍 방법 6

2.1.3 설정 식별자를 이용한 레이아웃 최적화 7

2.1.4 앱이 지원할 화면 크기를 정확하게 manifest에 정의 9

2.2 화면호환 가이드 10

2.2.1 화면호환 모드 버전 11

2.2.2 화면호환 모드 사용 안 하기 12

2.2.3 화면호환 모드 사용하기 13

2.3 프래그먼트 가이드 14

2.3.1 프래그먼트 사용 시 주의사항 16

2.4 태블릿 레이아웃 가이드 17

2.4.1 새로운 크기 식별자 18

2.4.2 새로운 식별자 사용 예 19

2.4.3 화면 크기 선언 20

2부 태블릿 앱 개발을 위한 안드로이드 프로그래밍

0 3 태블릿 UI/UX의 특징 22

3.1.1 홀로그래픽 UI 22

3.1.2 기존 데스크톱 OS와 유사한 UX 24

3.1.3 편리한 입력 24

3.1.4 큰 화면에 적합한 레이아웃 25

0 4 태블릿 앱 프로그래밍 27

4.1 액티비티 27

4.2 액티비티 생명주기 32

4.3 프래그먼트 37

4.3.1 프래그먼트를 이용한 앱 개발 39

4.4 프래그먼트 동적 처리 45

4.4.1 main.xml 수정 45

4.4.2 분할된 프래그먼트를 하나로 전환 46

4.5 프래그먼트 생명주기 49

4.5.1 프래그먼트 생명주기 순환 49

4.6 프래그먼트 사이의 통신 58

4.6.1 Fragment2에 버튼 추가 58

4.6.2 Fragment2 클래스 수정 59

4.6.3 프래그먼트 동작 61

4.7 인터페이스를 통한 상호 통신 61

4.7.1 Fragment1에 인터페이스 선언 62

4.7.2 Fragment2 구현 65

4.7.3 HoneyActivity 수정 67

4.8 액션 바 69

4.8.1 액션 바 보이기/숨기기 69

4.8.2 액션 바에 액션 아이템 추가하기 72

4.8.3 액션 아이템과 앱 아이콘 수정 78

3부 스마트폰과 태블릿 호환 앱 개발

0 5 Support Library Package를 이용한 앱 개발 82

5.1.1 Android Support Library 사용 84

5.1.2 HoneyActivity 변경 89

5.1.3 Fragment1 변경 92

5.1.4 Fragment2 수정 94

0 6 멀티팬과 싱글팬을 이용한 앱 개발 99

6.1.1 레이아웃 재배치 100

6.1.2 Fragment2Activity 추가 104

6.1.3 Fragment2 클래스 수정 106

6.1.4 HoneyMessage 리스너 개선 108


책의 전체적인 흐름의 해상도 편화에 대한 대응을 위하여 필요한 내용을 여러 단계를 통해서 설명을 하게된다.

1. 레이아웃을 사용되는 속성값 들의 소개

- wrap_content, fill_parent,, match_parent, dp, sp

- 사이즈, 밀도, 해상도, 비율

- 프로젝트 res 폴더를 통해서 다양한 이미지 적재 방법

* 절대로 px과 같은 값을 레이아웃에 직접 정의하지 말것을 당부한다.


2. 메니페스트에 다양한 옵션들

- 화면모드

- support-screens, minSdk, TargetSdk

- 태블릿을 위한 새로운 식별자, sw<N>dp, w<N>dp, h<N>dp


4.Fragment

- 태블릿 또는 스마트폰에서 사용할 수 있는 프래그먼트 개발 방법 및 데이터 전송방법

   액티비가 중계 역활을 하는 프레그먼트간의 통신 방식 (아래에 좀더 내용을 기록했다.)

- 스마트폰, 태블릿 구분이 최신 개발 기술이다. 


5. 액션바 

- 허니컴 이상에서 지원하는 액션바 개발 방법

- 액션바 꾸미기 등

6. Support Library Package 

- 절대적으로 중요한 부분으로 최신 OS기능 특히 프래그먼트를 구현 OS에서 사용할 때 필수적인 lib로 

  이것을 사용방법을 안내한다.

- 최신 기능을 모두 포함하는 것은 아니지만, 프래그먼트 등 주요한 것이 OS 구분없이 사용 가능하게 해준다.


7. 멀티팬 처리

- 화면을 분활해서 구성할 수 있다.

- 작은 화면과 큰화면에 대응이 용이하다. 


[내용중에 기억할 사항들]

Fragment간에 통신 방식은 Activity가 중계해 주는 인테페이스 방식을 사용한다. 

(4.7 인터페이스를 통한 상호 통신)


<pre class="brush: java">

Fragment1 fragment1;

Fragment2 fragment2;

/** Called when the activity is first created. */

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

fragment1 = (Fragment1)getFragmentManager()

.findFragmentById(R.id.fragment1);

fragment2 = (Fragment2)getFragmentManager()

.findFragmentById(R.id.fragment2);

fragment1.setHoneyListener(this);

fragment2..setHoneyListener(this);

}

@Override

public void sendMessage(CharSequence msg) {

fragment2.setMessage(msg);

}

@Override

public String getNextMessage() {

return null;

}

</pre>


2.3.1 프래그먼트 사용 시 주의사항

다음은 프래그먼트 사용 시 주의해야 할 사항들입니다.

● 프래그먼트 클래스를 XML에 지정하면 교체가 안 됩니다.

● 프래그먼트는 FrameLayout의 ID를 지정하고 FrameTransaction을 사용해서

add, replace해야 합니다.

● 프래그먼트 사이의 데이터 전송에는 매개변수로 번들Bundle 객체를 사용합니다.

● FragmentTransaction을 사용할 때 반드시 commit()을 사용해야 합니다.

● FragmentTransation을 사용해서 프래그먼트를 추가할 때 애니메이션은 add,

replace를 지정하기 이전에 선언해야 합니다.

● FragmentTransaction의 addToBackStack() 메소드를 지정하지 않으면, Back

CHAPTER 02 다양한 단말기에 호환 가능한 앱 개발 가이드 17

Key 사용 시 해당 액티비티가 종료됩니다.

● 프래그먼트 하나가 다른 프래그먼트를 직접 컨트롤하도록 구현해서는 안 됩니다.

● 프래그먼트 내용을 변경하는 코드는 모두 해당 프래그먼트 클래스 내에 있어야

합니다.

● 프래그먼트와 액티비티의 통신을 위해 프래그먼트에서 리스너 인터페이스를 제

공하고, 이것을 액티비티에서 구현해서 사용합니다.

● 프래그먼트를 내장하고 있는 액티비티와 콜백 인터페이스를 통해서 앱 내부의

프래그먼트와 통신합니다.

● 이벤트 발생 시 콜백 인터페이스를 통해 자신을 호스팅하는 엑티비티에 내용을

전달하도록 구현합니다.


이상으로 책의 내용을 간단히 기록해 보았다.


어찌보면 책의 내용을 모두 기록한 것이 아니니, 소개 내용 자체가 부족할 수 있겠지만,

책 차제에는 충분한 설명, 코드 예제, 설명에 해당하는 그림등 이해하는데 부족함 없이 내용이 들어 있다.


끝으로 

이북이 장점이 Free PDF라서 DRM이 없기에, PC에서 스마트폰에서 넣고 다니면서 볼 수 있기에

매우 좋은 듯하다.

이렇게 eBook으로 소개되는 책이 점점 더 많이 늘어 나길 기대해 본다. 










'Android' 카테고리의 다른 글

Using the new Build System  (0) 2012.11.19
세로 SeekBar 예제 소스  (0) 2012.11.16
쓸만한 위젯 lib  (0) 2012.11.16
MIV에 대해서  (0) 2011.07.21
Application Class에 대해서  (0) 2011.07.15