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