안드로이드


android 2d Game 기초



android setting



안드로이드 플랫폼 구성.


flatform - linux


안드로이드에서 사용하는 자바는 구글이 배포하고 제공하는 실행환경임.

구글에서 배포하는 라이브러리들은 자바가 아니라 안드로이드 플랫폼임.


단 그 플랫폼을 이용하기 위한 언어가 자바와 같은 뿐이다.


자바버츄얼 머신이 아니라 달빅 버츄얼 머신을 사용.

OpenGL, SQLite 등 라이브러리를 제공하는데 C로 만들어져 있으나

그것을 자바로 사용 할수 있도록 자바라이브러리로 제공


안드로이드 플랫폼 구조






프로젝트 기본구조 익히기.




시작함수는 잊자.


절차적 프로그램의 기본함수인 Main()이 없다.


단 메인을 대신하는 설정파일이 있다.(MainAtivity, MainFrame)


안드로이드는 도스에서 개발 못함.


그래들 - 개발할땐 필요없음 지워도 됨, 하지만 나중에 어차피 추가 해야함


안드로이드 프로그램을 위한 필수 요소


manifest - 어플리케이션에 대한 전반적인 정보를 담고있는 파일. 프로필.


메인 -> 자바  -> 클래스생성(메인엑티비티) -> 엑티비티 이즈상속


여러개의 액티비티 중 가장 먼저 실행되어야 할 놈을 <intent-filter>로 지정


   <action android:name="android.intent.action.MAIN"/> 메니페스트에서 제일 먼저 떠야할 엑티비티 라고 말해주는 거.






폰 설정

환경설정 -> 애플리케이션 관리자 -> usb디버깅 체크



뷰 그룹.


액티비티엔 하나의 뷰만 가질수 있다


하지만 뷰 그룹을 사용하면 여러개를 사용할수 있다?

ViewGroup - 추상클래스

 - 어떻게 배치할 것인가


Linear - 일렬 옆으로 쭉

Relative - 상대적인 기준 정하고…. 설정

Frame - 여러개가 있지만 일렬(맨 마지막것만 보이게)(카드 덱 처럼)

Grid- 격자형

Absolute- 절대 위치좌표 집어주고  설정




리소스를 활용한 배치.


리소스를 이용한 방식???

XML로 코드를 대신 작성하라고?


dpi :: 1인치당 160개의 픽셀 - 1 기준


픽셀단위로 크기를 정하면 폰마다 다르게 나옴


DP로 해야댐




안드로이드 어플리케이션의 구성 요소는 다음과 같다.

* 액티비티(Activity)

* 서비스(Service)

* 브로드캐스트 리시버(Broadcast Receiver)

* 콘텐트 프로바이더(Content Provider)



app_hier.png

1. 액티비티(Activity)

- 어플리케이션의 한 '화면'을 의미한다.

- 휴대용 단말기의 성능은 PC에 비하면 메모리가 턱없이 부족하다. 때문에 액티비티는 액티비티의 상태(활성/비활성)와 액티비티 생애주기(Activity Lifecycle)에 따라 생성되거나 소멸된다.

- 화면에 표시되어 있는 상태가 아니라면 비활성 상태(Inactive)가 되어 액티비티 내에서 처리되는 작업 또한 중단된다.



2. 서비스(Service)

- 백그라운드에서 실행되는 컴포넌트.

- 예를 들면 음악 재생 어플리케이션.

- 서비스는 UI가 없기때문에 자신의 동작 여부를 알림 메세지 혹은 토스트를 통해 사용자에게 알린다.



3. 브로드캐스트 리시버(Broadcast Receiver)

- 인텐트(Intent) 형태의 방송 메시지(Broadcast Message)를 수신하는 역할을 한다.

- 주로 시스템의 상태(배터리 상태, 통신 상태, SD카드 삽입 등)를 알리기 위해 사용하지만, 어플리케이션에서 특정 작업이 완료되었을 때 처리할 동작을 구현할 때도 사용한다.

- 서비스와 마찬가지로 UI를 가지고 있지 않기 때문에 사용자에게 작업의 진행정도나 상태 등을 알리기 위해 알림 메시지나 토스트를 사용한다.



4. 콘텐트 프로바이더(Content Provider)

- 한 어플리케이션 내의 데이터를 다른 어플리케이션에서도 사용할 수 있게 해준다.(SD카드가 아닌 내부)

- 공유하려는 데이터가 있는 어플리케이션에 데이터를 공유할 수 있는 '통로'의 역할을 한다.

- 콘텐트 프로바이더를 통해 외부에서 접근할 수 있는 데이터의 범위, 방법 등을 지정하여 어플리케이션내의 데이터를 안전하고 공유할 수 있다.

- 콘텐트 프로바이더에 접근하려면 콘텐트 리졸버(Content Resolver)가 필요하다.



5. 인텐트(Intent)

- 액티비티, 서비스 호출 및 브로드캐스트 리시버에 메시지를 전달할 떄 사용.

- 내부에 어떤 형식의 정보가 담겨 있느냐에 따라 명시적 인텐트(Explicit Intent)와 암시적 인텐트(Implicit Intent)로 나뉜다.


- 명시적 인텐트 : 호출하거나 메시지를 보낼 컴포넌트가 명확하게 지정되어 있다. ex) 철수

- 암시적 인텐트 : 대상 컴포넌트가 명확하게 지정되어 있지 않고, 대상의 속성만 지정되어 있다. ex) 학생

이러한 암시적 인텐트를 처리하려면, 인텐트 필터(Intent Filter)를 사용하여 해당 컴포넌트의 속성을 안드로이드 시스템에 등록해야 한다.



6. 알림 메시지(Notification)

- 알림 바(Notification bar)나 알림 패널(Notification Panel), 소리, 진동, LED 점멸 등을 통해 사용자에게 특정 이벤트를 알릴 때 사용.

- 서비스, 브로드캐스트 리시버가 사용.



7. 토스트(Toast)

- 특정 이벤트를 사용자에게 알릴 때 사용하며, 주로 간단한 메시지를 표시한다.



클릭 이벤트 처리하기

- 레이아웃 구성과 Toasts활용하기

+ Recent posts