안드로이드
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) |
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활용하기