기술 블로그

안드로이드 학습계획 본문

Android

안드로이드 학습계획

jaegwan 2018. 9. 26. 16:35
반응형

do it 안드로이드 프로그래밍 or 깡샘의 안드로이드


 do it 안드로이드

 깡쌤 안드로이드

첫째 마당

Hello! 안드로이드

01 안드로이드란?
안드로이드에 대한 이해
안드로이드의 특징
안드로이드의 흐름
안드로이드의 현재

02 개발 환경 구축하기
개발 환경 구축을 위한 프로그램
자바 설치하기
안드로이드 스튜디오 설치하기

03 첫 번째 앱 만들기
첫 프로젝트 만들기
하나씩 바꾸어 보기
여러 개의 버튼에 기능 추가하기
새로운 화면 추가한 후 띄워주기
새로운 프로젝트를 만들 때 다른 종류의 화면 선택해 보기

04 안드로이드 프로젝트와 개발 도구
안드로이드 최근 버전의 주요 특징
안드로이드 프로젝트
안드로이드 SDK의 개발 도구

05 앱 장터, Play 스토어에 앱 등록하기
안드로이드의 앱 장터, Play 스토어
애플리케이션 판매를 위한 개발자 등록하기
서명된 설치 파일 만들기
Play 스토어에 등록하기

06 실제 단말 연결하기
PC에 드라이버 설치하기
단말 연결하고 설정 바꾸기


둘째 마당
안드로이드 완벽 가이드

01 안드로이드 스튜디오와 기본 레이아웃 익히기
안드로이드 스튜디오 살펴보기
뷰와 뷰의 크기 속성 이해하기
제약 레이아웃 익히기


02 레이아웃과 기본 위젯 사용하기
대표적인 레이아웃 살펴보기
리니어 레이아웃 사용하기
상대 레이아웃 사용하기
테이블 레이아웃
스크롤뷰 사용하기
프레임 레이아웃과 뷰의 전환
기본 위젯들

03 애플리케이션 구성하기
레이아웃 인플레이션 이해하기
화면 구성과 화면 간 전환
인텐트 살펴보기
액티비티를 위한 플래그와 부가 데이터
액티비티의 수명주기
서비스
브로드캐스트 수신자
위험 권한 부여하기
리소스와 매니페스트

04 위젯과 이벤트 활용하기
이벤트 처리 이해하기
토스트와 대화상자
프로그레스바 사용하기
간단한 애니메이션 사용하기
페이지 슬라이딩 사용하기 
프래그먼트
액션바와 탭 사용하기
웹브라우저 사용하기
키패드 설정하기

05 선택 위젯의 사용과 커스텀뷰 만들기 
나인패치 이미지 알아보기
[비트맵] 버튼 만들기
리스트뷰 사용하기
스피너 사용하기
그리드뷰 사용하기
복합 위젯 만들기
월별 캘린더 만들기
멀티터치 이미지 뷰어 만들기

06 그래픽
빨간색 사각형 그리기
그래픽 그리기
그리기 객체로 만들어 그리기
비트맵 이미지 사용하기
페인트 보드 만들기
서피스뷰 사용하기
그래픽을 위한 카메라 객체 사용하기

07 스레드와 애니메이션
핸들러 사용하기
일정 시간 후에 실행하기
스레드로 메시지 전송하기
AsyncTask 사용하기
스레드로 애니메이션 만들기
트윈 애니메이션
그래프 애니메이션 만들기

08 네트워킹
네트워킹이란?
소켓 사용하기
웹으로 요청하기
뉴스 정보 가져오기

09 데이터베이스
모바일 데이터베이스
데이터베이스와 테이블 만들기
헬퍼 클래스를 이용해 업그레이드 지원하기
데이터 조회하기
SQL을 메소드 호출로 실행하기

10 멀티미디어
오디오 재생하기
동영상 재생하기
오디오 녹음하여 저장하기
동영상 녹화하기
카메라로 사진 찍어 저장하기

11 위치기반 서비스와 앱 위젯
GPS를 이용해 나의 위치 확인하기
현재 위치의 지도 보여주기
지도에 아이콘 추가하기
앱 위젯 만들기

12 메시징과 소셜 네트워크 서비스
메시징 서비스 이해하기
푸시 서비스 사용하기

13 근거리 통신과 센서
근거리 통신 이해하기
NFC 사용하기
NFC 태그 읽기와 쓰기
센서 이해하기


셋째 마당 
구글 play 스토어에 올리는 안드로이드 애플리케이션 

01 멀티메모 앱
멀티메모의 개요
1단계 - 메인 화면 구성하기
2단계 - 데이터베이스와 메모 입력화면 구성 및 사진 기능 추가하기
데이터베이스 만들기
메모 입력화면 구성하기
사진 기능 추가하기
메모 저장하기 
3단계 - 손글씨 기능 추가하기
4단계 - 음성과 동영상 기능 추가하기

 Part 01 안드로이드 시작하기

01 _ 개발환경을 구축하자!
1.1. 안드로이드 스튜디오 개발환경 구축
1.1.1. 자바 설치
1.1.2. 안드로이드 스튜디오 설치
1.1.3. 안드로이드 스튜디오 설정
1.2. 첫 번째 앱 만들고 실행하기
1.2.1. 프로젝트 생성
1.2.2. AVD 매니저
1.2.3. AVD에서 실행
1.2.4. 스마트폰에서 실행
1.2.5. 개발 편의를 위한 설정
1.3. 앱 배포
1.3.1. APK 파일 추출
1.3.2. APK 파일 배포

02 _ 안드로이드 프로젝트 이해
2.1. 안드로이드 앱 개발 특징
2.1.1. 안드로이드의 특징
2.1.2. 안드로이드 플랫폼 아키텍처
2.1.3. 컴포넌트 기반 개발
2.1.4. 리소스를 이용한 개발
2.2. 개발 디렉터리와 파일 구조
2.2.1. 앱의 디렉터리와 파일
2.2.2. R.java의 이해
2.3. 그레이들(gradle) 파일
2.3.1. settings.gradle
2.3.2. 프로젝트 수준의 그레이들
2.3.3. 모듈 수준의 그레이들
2.4. Hello World 앱 코드 분석 
2.4.1. AndroidManifest.xml 
2.4.2. MainActivity.java 
2.4.3. activity_main.xml 
2.5. 안드로이드 버전

Part 02 기본 앱을 만들어보자
03 _ 사용자 인터페이스
3.1. UI의 기본 구조
3.1.1. 액티비티-뷰 구조
3.1.2. UI 프로그램 작성 방법 : 자바 코드 VS 레이아웃 XML
3.1.3. 뷰의 기초 속성
3.2. 뷰 아키텍처
3.2.1. 뷰의 계층구조
3.2.2. 뷰 계층구조 구현
3.3. 기초 뷰 활용
3.3.1. TextView
3.3.2. ImageView
3.3.3. EditText
3.3.4. Button
3.3.5. Checkbox, RadioButton

04 _ 레이아웃을 활용한 다양한 뷰 배치
4.1. LinearLayout
4.1.1. LinearLayout 소개
4.1.2. 레이아웃 중첩
4.1.3. LinearLayout 속성
4.2. RelativeLayout
4.2.1. RelativeLayout 소개
4.2.2. align 속성
4.2.3. alignParentXXX 속성
4.3. FrameLayout
4.3.1. FrameLayout 소개
4.3.2. 탭 화면 구현 : TabHost
4.4. TableLayout
4.5. GridLayout 
4.5.1. GridLayout 소개 
4.5.2. GridLayout 속성 
4.6. ConstraintLayout 
4.6.1. 상대적 위치 지정 
4.6.2. 여백(margin) 
4.6.3. 가운데 맞춤과 치우침(bias) 
4.6.4. 비율(Ratio)

05 _ 다양한 사용자 알림 효과
5.1. 진동과 소리 
5.1.1. 진동 울리기 
5.1.2. 소리 울리기 
5.2. 다이얼로그 
5.2.1. 토스트(Toast) 
5.2.2. 알림 창(AlertDialog) 
5.2.3. 목록(AlertDialog) 
5.2.4. 프로그레스 다이얼로그(ProgressDialog) 
5.2.5. 날짜 선택(DatePickerDialog) 
5.2.6. 시간 선택(TimePickerDialog) 
5.2.7. 커스텀 다이얼로그(AlertDialog)

06 _ 사용자 이벤트 처리
6.1. 델리게이션 이벤트 모델 
6.1.1. 이벤트 프로그램 구조 
6.1.2. 다양한 이벤트 처리 
6.2. 하이어라키 이벤트 모델 
6.2.1. 터치 이벤트 
6.2.2. 키 이벤트 

07 _ 리소스 활용 및 스마트폰 크기 호환성
7.1. 안드로이드 리소스 
7.1.1. 리소스 종류 
7.1.2. 다양한 리소스 활용 
7.2. 스마트폰 크기 호환성 
7.2.1. 리소스 폴더명 조건 명시법 
7.2.2. DisplayMetrics 
7.2.3. 논리적 단위로 스마트폰 크기 호환성 확보 
도전 과제
Mission 1: 페이스북의 메신저 인트로 화면 구성 
Mission 2: 브런치 앱의 새 글 작성 화면 및 앱 종료 다이얼로그 띄위기 
Mission 3: 주소록 앱의 새 연락처 화면 구성 

Part 03 앱의 데이터를 영속화하자
08 _ DBMS을 이용한 데이터 영속화
8.1. SQLite을 이용한 영속화 
8.1.1. SQLiteDatabase 클래스 
8.1.2. SQLiteOpenHelper 클래스 
8.1.3. insert( ), query( ), update( ), delete( ) 함수 이용
8.2. Realm을 이용한 데이터 영속화 
8.2.1. Realm 소개 
8.2.2. Realm 사용 설정 
8.2.3. Realm 사용

09 _ 파일 및 SharedPreferences을 이용한 데이터 영속화
9.1. 퍼미션 
9.1.1. 퍼미션이란? 
9.1.2. 안드로이드 6.0 (API Level 23) 변경사항 
9.2. 파일에 읽고 쓰기 
9.2.1. 외부 저장 공간 이용 
9.2.2. 내부 저장 공간 이용 
9.3. SharedPreferences와 앱 설정 자동화 
9.3.1. SharedPreferences 
9.3.2. 앱 설정 자동화 
9.3.3. 앱 설정 자동화 적용 
도전 과제
Mission 1: 주소록 앱의 새로운 연락처 등록 화면 기능 구현 
Mission 2: 스마트폰의 환경설정 화면 및 설정 데이터 저장

Part 04 다양한 화면을 구성하자
10 _ AdapterView 활용
10.1. Adapter와 AdapterView 
10.1.1. AdapterView의 구조 
10.1.2. 라이브러리의 Adapter 
10.2. 커스텀 Adapter 
10.2.1. 커스텀 Adapter가 필요한 예
10.2.2. 커스텀 Adapter 작성 방법 
10.2.3. 커스텀 Adapter 추가 고려 사항

11 _ 다양한 뷰 활용
11.1. Spannable 
11.1.1. Spannable의 필요성 
11.1.2. Spannable 적용 
11.1.3. fromHtml( ) 함수로 적용 
11.2. WebView 
11.2.1. WebView 활용 
11.2.2. 자바스크립트와 자바 연동 
11.2.3. 이벤트 처리 
11.3. 기타 유용한 뷰 
11.3.1. 콤보박스 : Spinner 
11.3.2. 텍스트 자동완성 : AutoCompleteTextView 
11.3.3. 프로그레스바 : ProgressBar 
11.3.4. 값을 입력받는 프로그레스바 : SeekBar 

12 _ ActionBar와 메뉴
12.1. ActionBar 
12.1.1. ActionBar 구성 
12.1.2. 표시 옵션 
12.2. 안드로이드 API Level과 하위 호환성 
12.3. 메뉴 
12.3.1. 메뉴 작성 방법 
12.3.2. MenuInflater 활용 
12.3.3. 메뉴 다양하게 이용하기

13 _ 커스텀 뷰 개발
13.1. 커스텀 뷰 작성 방법 
13.2. 그래픽 프로그램 
13.2.1. 뷰를 그리는 방법 
13.2.2. Paint 클래스 
13.2.3. 코드에서 논리적 크기 획득 
도전 과제
Mission 1: 전화 앱의 로그 화면 구현 
Mission 2: 피트니스 앱의 활동 로그 도넛 작성 
Mission 3: 검색 추천단어 화면 구성 

14 _ 인텐트와 구글 기본 앱 연동
14.1. 인텐트 
14.1.1. 인텐트의 기본 개념 
14.1.2. 명시적 인텐트, 암시적 인텐트 
14.1.3. 인텐트 필터(Intent Filter) 
14.1.4. Extra 데이터 
14.1.5. 결과 되돌리기 
14.2. 구글 기본 앱 연동 
14.2.1. 주소록 앱 
14.2.2. 카메라 앱 
14.2.3. 갤러리 앱 
14.2.4. 음성인식 앱 
14.2.5. 기타 앱 연동

15 _ 액티비티 생명주기 및 다양한 제어
15.1. 액티비티 생명주기 
15.1.1. 생명주기 
15.1.2. 액티비티 상태 저장 
15.2. 태스크 관리 
15.2.1. 시스템의 태스크 관리 
15.2.2. 태스크 제어 방법 1 : launchMode 속성 설정 
15.2.3. 태스크 제어 방법 2 : Intent 플래그 이용 
15.3. 액티비티를 위한 다양한 설정 
15.3.1. 키보드 제어 
15.3.2. 다중 창 지원 
15.3.3. Picture In Picture(Android Oreo 추가사항) 
15.3.4. 기타 설정 

16 _ 스레드와 핸들러
16.1. ANR과 스레드-핸들러 
16.1.1. 액티비티 ANR 
16.1.2. ANR 문제 해결방법 
16.1.3. 핸들러 
16.2. AsyncTask와 Looper 
16.2.1. AyncTask 
16.2.2. Looper 
도전 과제
Mission 1: 카메라 앱 연동 
Mission 2: 구글 기본 앱 연동

Part 06 상용 앱 수준의 화면을 구성하자
17 _ Support 라이브러리 활용
17.1. Fragment 
17.1.1. Fragment 이해 
17.1.2. Fragment 작성법 
17.1.3. Fragment 생명주기 
17.1.4. 다양한 Fragment 
17.2. ViewPager 
17.3. RecyclerView 
17.3.1. RecyclerView 소개 
17.3.2. Adapter, ViewHolder 
17.3.3. LayoutManager 
17.3.4. ItemDecoration 

18 _ 머티리얼 디자인
18.1. NavigationDrawer, NavigationView 
18.1.1. NavigationDrawer 
18.1.2. NavigationView 
18.2. Snackbar, FloatingActionButton, TabLayout 
18.2.1. Snackbar 
18.2.2. FloatingActionButton 
18.2.3. TabLayout 
18.3. Toolbar, AppBarLayout, CoordinationLayout 
18.3.1. Toolbar 
18.3.2. AppBarLayout 
18.3.3. CoordinatorLayout 
18.4. Bottom Sheet 
18.4.1. persistent bottom sheet 
18.4.2. modal bottom sheet
도전 과제
Mission 1: AppBar, CoordinatorLayout 
Mission 2: NavigationDrawer, NavigationView 
Mission 3: RecyclerView

Part 07 컴포넌트를 제대로 이해하고 개발하자
19 _ 브로드캐스트 리시버와 알림
19.1. 브로드캐스트 리시버
19.1.1. 브로드캐스트 리시버 이해 
19.1.2. 브로드캐스트 리시버 작성 방법 
19.1.3. 시스템 브로드캐스트 인텐트 
19.1.4. 백그라운드 서비스 제한 (Android Oreo 변경사항) 
19.2. 알림 
19.2.1. 알림의 기본 구성 
19.2.2. NotificationChannel(Android Oreo 추가사항) 
19.2.3. 기본적인 알림 구성 
19.2.4. 알림의 다양한 구성 

20 _ 서비스 컴포넌트
20.1. 서비스 기본 개념 
20.1.1. 서비스 작성 방법 
20.1.2. 서비스 생명주기 
20.1.3. 데이터 공유 
20.2. AIDL의 이해 
20.2.1. AIDL 프로그램 구조 
20.2.2. AIDL 작성 방법
20.3. 인텐트 서비스(IntentService) 
20.4. 시스템 서비스(SystemService) 
20.4.1. ActivityManager 
20.4.2. PackageManager 
20.4.3. AlarmManager 
20.5. 백그라운드 서비스 제한 

21 _ 콘텐츠 프로바이더
21.1. 콘텐츠 프로바이더 이해 
21.1.1. 콘텐츠 프로바이더 구조 
21.1.2. 콘텐츠 프로바이더 작성법 
21.1.3. 콘텐츠 프로바이더 이용 
21.2. 구글 기본 앱의 콘텐츠 프로바이더 이용 
21.2.1. 주소록 앱 데이터 획득 
21.2.2. 갤러리 앱 데이터 획득 
도전 과제
Mission 1: 알람 앱 
Mission 2: 블로그 앱 에디터 

Part 08 위치 기반 서비스를 제공하자
22 _ 위치 정보 획득
22.1. LocationManager 이용 
22.1.1. 위치 정보 제공자 
22.1.2. 위치 정보 획득 
22.2. Fused Location API 이용

23 _ 지도 활용
23.1. 지도 출력 
23.1.1. 구글 지도를 위한 설정 
23.1.2. 구글 지도 화면 출력 
23.2. 구글 지도 제어 
23.2.1. 지도 중심 위치 이동 
23.2.2. GoogleMap 이벤트 처리 
23.2.3. 현재 위치 표시 
23.2.4. 주소와 위경도 변환 
도전 과제
Mission 1: 카카오택시의 출발 위치 조정 
Mission 2: 구글 지도 앱 화면

Part 09 서버 데이터를 활용하자
24 _ 네트워크 정보 활용
24.1. 다양한 네트워크 정보 활용 
24.1.1. TelephonyManager 
24.1.2. ConnectivityManager 
24.1.3. WifiManager 
24.2. XML, JSON 데이터 파싱 
24.2.1. XML 파싱 
24.2.2. JSON 파싱 

25 _ HTTP 통신
25.1. Java API를 이용한 HTTP 통신 
25.2. Volley API를 이용한 HTTP 통신 
25.3. Glide를 활용한 HTTP 통신

26 _ 실시간 서버 푸시
26.1. 소켓 프로그램 
26.1.1. 소켓 프로그램 작성 방법 
26.1.2. 소켓 프로그램 작성 시 주의점 
26.2. Firebase 클라우드 메시지 
도전 과제
Mission 1: HTTP 통신을 통한 날씨 정보 제공 

Part 10 다양한 기능을 제공하자
27 _ 스마트폰 기능 활용
27.1. SMS 송수신 
27.1.1. SMS 송신 
27.1.2. SMS 수신 
27.2. 센서 다루기 
27.2.1. 근접 센서 다루기 
27.2.2. 가속도 센서 다루기 
27.3. 블루투스 
27.3.1. 블루투스 제어 
27.3.2. 블루투스 통신 

28 _ 카메라 활용
28.1. SurfaceView vs TextureView 
28.1.1. SurfaceView 
28.1.2. TextureView 
28.2. Camera API
28.3. Camera2 API 
28.3.1. Camera2 API 구조 
28.3.2. Camera2 API 활용 

29 _ 앱 위젯 개발
29.1. 앱 위젯 기본 구조 
29.1.1. 앱 위젯 개념 
29.1.2. 앱 위젯 개발 
29.2. Collection 앱 위젯 개발 
29.2.1. Collection 앱 위젯 구조 
29.2.2. Collection 앱 위젯 개발 

30 _ 멀티미디어 활용
30.1. 오디오, 비디오 재생 
30.1.1. 오디오 재생 
30.1.2. 비디오 재생 
30.2. 음성, 영상 녹화 
30.2.1. 음성 녹음 
30.2.2. 영상 녹화 
도전 과제
Mission 1: 카메라 앱 구현 
Mission 2: 날씨 정보 앱 위젯 구현

Part 11 코틀린으로 안드로이드 앱을 개발하자!
31 _ 안드로이드 스튜디오에서 코틀린으로 개발하기
31.1. 코틀린 소개 
31.2. 안드로이드 스튜디오 3에서 코틀린 개발환경 
31.2.1. 안드로이드 스튜디오 2.x 
31.2.2. 안드로이드 스튜디오 3 
31.2.3. 코틀린 클래스 추가 
31.2.4. 자바 코드를 코틀린 코드로 변환 
31.3. 간단한 코드 분석으로 코틀린 이해하기 

32 _ 코틀린 기초 작성법
32.1. 코틀린 파일 작성 규칙 
32.1.1. 패키지 정의 
32.1.2. 파일로 작성 
32.2. 기초 타입 
32.2.1. Numbers Type 
32.2.2. String 
32.2.3. Characters, Booleans 
32.2.4. Arrays 
32.2.5. Any 
32.2.6. Nullable과 Null 체크 
32.2.7. 타입 체크 : is 연산자 
32.3. 변수 및 함수 선언 
32.3.1. 변수 선언 
32.3.2. 함수 선언 
32.4. 실행 흐름 제어 
32.4.1. If 표현식 
32.4.2. When 표현식 
32.4.3. For 반복 
32.4.4. While 반복

33 _ 코틀린 OOP 프로그램
33.1. 클래스 정의 
33.1.1. 클래스 선언 및 생성 
33.1.2. 생성자 
33.2. 상속 
33.2.1. 상속 관계 명시 
33.2.2. 함수 오버라이딩 
33.2.3. 변수 오버라이딩 
33.3. 추상 클래스와 인터페이스 
33.3.1. 추상 클래스 
33.3.2. 인터페이스 
33.4. 프로퍼티 
33.5. 접근 제한자 
33.5.1. 패키지 접근 제한 
33.5.2. 클래스 접근 제한 

34 _ 코틀린으로 만드는 안드로이드 앱 


반응형
Comments