Java, android 스터티9
-
Upload
heejun-kim -
Category
Education
-
view
44 -
download
2
Transcript of Java, android 스터티9
![Page 1: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/1.jpg)
1
JAVA, Android 스터디
2015.06.11김희준
![Page 2: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/2.jpg)
2
참조 교재 : Do it! 안드로이드 앱 프로그래밍
ㅁ 자바에서는 Graphics 라는 클래스가 존재 - 하위 클래스 : Canvas, Paint, Bitmap, Drawable 등 - Canvas : 뷰의 표면에 직접 그릴 수 있게 만들어주는 객체와 이를 위한 메소드 정의 - Paint : 그래픽 그리기를 위해 필요한 색상 등의 속성을 담음 - Bitmap : 픽셀로 구성된 이미지로 메모상에 그래픽을 그림 - Drawable : 사각형 , 이미지 등의 그래픽 요소가 객체로 정의
ㅁ 그래픽 그리기 순서 - 1 단계 : 새로운 클래스를 만들고 뷰를 상속 받기 - 2 단계 : 페인트 객체를 초기화하고 필요한 속성 설정 - 3 단계 : onDraw() 메소드 내에 사각형을 그리는 메소드 호출 - 4 단계 : onTouch() 메소드 내에 터치 이벤트를 처리하는 코드 작성 - 5 단계 : 새로만든 뷰를 메인 액티비티에 추가
0. 지난주 복습
![Page 3: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/3.jpg)
3
참조 프로젝트 : SampleCustomView-Style다운로드 : easyspub.com
실행화면
0. 지난주 복습
![Page 4: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/4.jpg)
4
참조 프로젝트 : SampleCustomView-Style다운로드 : easyspub.com
첫번째 사각형을 그림채우기 색상은 빨간색으로 설정
ㅁ 사각형 그리기
0. 지난주 복습
![Page 5: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/5.jpg)
5
참조 프로젝트 : SampleCustomView-Style다운로드 : easyspub.com
첫번째 사각형의 테두리 설정초록색으로 사각형의 테두리 그림
ㅁ 사각형 그리기
0. 지난주 복습
![Page 6: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/6.jpg)
6
참조 프로젝트 : SampleCustomView-Style다운로드 : easyspub.comㅁ 원 그리기
첫번째 원 그리기Canvas 객체의 drawCircle 메소드를 이용해 원을 그립니다 .
두번째 원 그리기Canvas 객체의 drawCircle 메소드를 이용해 원을 그립니다 .setAntiAlias 속성값을 Ture 로 줄경우원이 부드럽게 그려집니다 .
0. 지난주 복습
![Page 7: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/7.jpg)
7
참조 프로젝트 : SampleCustomView-Style다운로드 : easyspub.com
첫번재 텍스트 Stroke 스타일로 설정
두번재 텍스트 Fill 스타일로 설정ClipRect 는 그리기 가 일어나는 영역을 설정하는 메소드
0. 지난주 복습
![Page 8: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/8.jpg)
8
참조 프로젝트 : PaintBoard다운로드 : easyspub.com
실행화면
버전 1 버전 2 버전 3
0. 지난주 복습
![Page 9: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/9.jpg)
9
ㅁ 버전 1
소스코드가 너무 길어 그리는 부분만 분석
터치한 후 뗄 때 좌표 초기화
참조 프로젝트 : PaintBoard다운로드 : easyspub.com0. 지난주 복습
![Page 10: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/10.jpg)
10
ㅁ 버전 1
소스코드가 너무 길어 그리는 부분만 분석
터치할 때 눌린 좌표를 기준으로 선을 그림
참조 프로젝트 : PaintBoard다운로드 : easyspub.com0. 지난주 복습
![Page 11: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/11.jpg)
11
터치 한 상태에서 움직일 경우계속해서 선을 그림
ㅁ 버전 1
참조 프로젝트 : PaintBoard다운로드 : easyspub.com0. 지난주 복습
![Page 12: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/12.jpg)
12
Invlidate 메소드로 화면을 다시 그림
ㅁ 버전 1
참조 프로젝트 : PaintBoard다운로드 : easyspub.com
PaintBoard.java 코드
0. 지난주 복습
![Page 13: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/13.jpg)
13
참조 프로젝트 : SampleCustomView다운로드 : easyspub.com
1. 색상선택 부분 2. 펜 굵기 / 지우개 부분
3. 버전 2 와 버전 3 의 다른점 찾기 + 버전 3 에서 추가된 내용 발표
0.5 지난주 복습 ( 발표 )
![Page 14: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/14.jpg)
14
1. 스레드
ㅁ 스레드 (Thread) 의 필요성
- 메인 액티비티는 하나의 프로세스로 처리 * 대기시간이 길어질 시 많은 시간이 필요
- 멀티스레디 방식으로 해결 가능 , 메모리 리소스 공유
- 리소스를 공유하기 때문에 데드락 (Deadlock) 발생 가능
- 런타임 예외라서 찾기가 힘듬
- 안드로이드에선 자바의 표준 Thread 지원
참조 교재 : Do it! 안드로이드 앱 프로그래밍
![Page 15: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/15.jpg)
15
1. 스레드
실행화면
참조 프로젝트 : SampleJavaThread다운로드 : easyspub.com
![Page 16: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/16.jpg)
16
1. 스레드 참조 프로젝트 : SampleJavaThread다운로드 : easyspub.com
버튼 터치시 스레드에서 받은값을 출력 함
MainActivity 의 소스
![Page 17: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/17.jpg)
17
1. 스레드 참조 프로젝트 : SampleJavaThread다운로드 : easyspub.com
MainActivity 의 소스
화면이 보이고 있을때스레드를 실행
![Page 18: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/18.jpg)
18
1. 스레드 참조 프로젝트 : SampleJavaThread다운로드 : easyspub.com
MainActivity 의 소스
화면이 꺼져 있을때 스레드를 중지
![Page 19: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/19.jpg)
19
2. 스레드 핸들러
ㅁ 프로세스가 생성되면 메인스레드는 메시지 큐를 실행 , 메시지 큐를 이용해 메인 스레드가 처리할 메시지를 전달 하는 것이 핸들러 클래스
스레드와 스레드 핸들러 플로우 차트
참조 교재 : Do it! 안드로이드 앱 프로그래밍
![Page 20: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/20.jpg)
20
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
실행화면
![Page 21: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/21.jpg)
21
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
MainActivity 의 소스
스레드 핸들러 변수 선언과새로운 핸들러 객체 생성
![Page 22: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/22.jpg)
22
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
MainActivity 의 소스
프로그래스 바 ( 가로로 긴 막대 ) 0 으로 초기화
![Page 23: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/23.jpg)
23
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
MainActivity 의 소스
액티비티 시작 시 스레드 생성 후 실행
![Page 24: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/24.jpg)
24
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
MainActivity 의 소스
1 초마다 핸들러로 메시지 전송
![Page 25: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/25.jpg)
25
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
MainActivity 의 소스
스레드에서 작업 상태나 결과를 핸들러의 sendMessage() 로 전송
![Page 26: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/26.jpg)
26
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
MainActivity 의 소스
새로운 Handler 클래스 정의 ,프로그래스 바를 5 씩 증가시킴
![Page 27: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/27.jpg)
27
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
handleMessage() 메소드 내에서전달된 정보를 이용해 UI 업데이트
MainActivity 의 소스
![Page 28: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/28.jpg)
28
2. 스레드 핸들러 참조 프로젝트 : SampleThread다운로드 : easyspub.com
Activity_main.xml 의 소스
진행상태를 표기하기 위한 프로그래스 바를 정의
![Page 29: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/29.jpg)
29
3. 스레드로 메시지 전송
MainActivity 의 소스
ㅁ 앞에 그림은 서브스레드와 메시지 큐와의 메시지 전달 , 하지만 서브스레드가 메인스레드에게 메시지를 전달해야 되는 경우도 생기며 , 이를 순차적으로 처리하기 위해 메시지 큐가 사용됨 , 루퍼가 계속 돌며 메시지 큐에 있는 명령들을 한 개 씩 처리
참조 교재 : Do it! 안드로이드 앱 프로그래밍
![Page 30: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/30.jpg)
30
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
실행화면
3. 스레드로 메시지 전송
![Page 31: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/31.jpg)
31
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
새로운 스레드 생성 , 스레드를생성하고 스레드를 위한 핸들러를 만든다 .
MainActivity 의 소스
3. 스레드로 메시지 전송
![Page 32: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/32.jpg)
32
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
새로만든 스레드에서 루퍼 (Lopper) 를 실행
MainActivity 의 소스
3. 스레드로 메시지 전송
![Page 33: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/33.jpg)
33
2. 스레드 핸들러 참조 프로젝트 : SampleLopper다운로드 : easyspub.com
새로만든 스레드에서 루퍼 (Lopper) 를 실행
MainActivity 의 소스
![Page 34: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/34.jpg)
34
2. 스레드 핸들러 참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
텍스트 뷰와 텍스를 수정할 수 있는에디트 텍스트를 위한 레퍼런스 변수 선언
![Page 35: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/35.jpg)
35
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
메인스레드를 위한 핸들러
3. 스레드로 메시지 전송
![Page 36: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/36.jpg)
36
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
서브스레드를 위한 핸들러
3. 스레드로 메시지 전송
![Page 37: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/37.jpg)
37
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
텍스트 뷰와 텍스를 수정할 수 있는에디트 텍스트를 위한 객체 생성
3. 스레드로 메시지 전송
![Page 38: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/38.jpg)
38
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
생성된 객체를 레퍼런스 변수 참조 ( 이름 ) 를 이용해 activity_main.xml 에 이미 만들어진텍스트 뷰와 에디트 텍스트의 속성을 알 수 있음
3. 스레드로 메시지 전송
![Page 39: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/39.jpg)
39
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
버튼이 눌릴 경우 스레드로 메시지를 보내고해당 스레드를 실행
3. 스레드로 메시지 전송
![Page 40: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/40.jpg)
40
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
새로 만든 스레드 핸들러 ,메인 스레드의 핸들러로 메시시 전송
3. 스레드로 메시지 전송
![Page 41: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/41.jpg)
41
참조 프로젝트 : SampleLopper다운로드 : easyspub.com
MainActivity 의 소스
새로 만든 스레드 핸들러로 받은 메시지를 메인 스레드 핸들러에서에디트텍스트에 메시로 표시
3. 스레드로 메시지 전송
![Page 42: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/42.jpg)
42
Q & A
![Page 43: Java, android 스터티9](https://reader034.fdocuments.net/reader034/viewer/2022052509/55c4a4f5bb61ebf20a8b45c3/html5/thumbnails/43.jpg)
43
Thank you!!