2. 2
ㅁ 스레드(Thread)의 필요성
- 메인 액티비티는 하나의 프로세스로 처리
* 대기시간이 길어질 시 많은 시간이 필요
- 멀티스레디 방식으로 해결 가능, 메모리 리소스 공유
- 리소스를 공유하기 때문에 데드락(Deadlock)발생 가능
- 런타임 예외라서 찾기가 힘듬
- 안드로이드에선 자바의 표준 Thread지원
참조 교재 : Do it! 안드로이드 앱 프로그래밍0. 지난주 복습
4. 4
참조 프로젝트 : SampleJavaThread
다운로드 : easyspub.com
버튼 터치시 스레드에서 받은
값을 출력 함
MainActivity의 소스
0. 지난주 복습
5. 5
참조 프로젝트 : SampleJavaThread
다운로드 : easyspub.com
MainActivity의 소스
화면이 보이고 있을때
스레드를 실행
화면이 꺼져 있을때
스레드를 중지
0. 지난주 복습
6. 6
ㅁ 프로세스가 생성되면
메인스레드는 메시지 큐를
실행, 메시지 큐를 이용해
메인 스레드가 처리할
메시지를 전달 하는 것이
핸들러 클래스
스레드와 스레드 핸들러 플로우 차트
참조 교재 : Do it! 안드로이드 앱 프로그래밍0. 지난주 복습
7. 7
참조 프로젝트 : SampleThread
다운로드 : easyspub.com
실행화면
0. 지난주 복습
8. 8
참조 프로젝트 : SampleThread
다운로드 : easyspub.com
MainActivity의 소스
스레드 핸들러 변수 선언과
새로운 핸들러 객체 생성
0. 지난주 복습
9. 9
참조 프로젝트 : SampleThread
다운로드 : easyspub.com
MainActivity의 소스
프로그래스 바(가로로 긴 막대) 0으로 초기화
액티비티 시작 시 스레드 생성 후 실행
1초마다 핸들러로 메시지 전송
스레드에서 작업 상태나 결과를 핸들러의
sendMessage()로 전송
0. 지난주 복습
10. 10
참조 프로젝트 : SampleThread
다운로드 : easyspub.com
handleMessage()메소드 내에서
전달된 정보를 이용해 UI 업데이트
MainActivity의 소스
새로운 Handler클래스 정의,
프로그래스 바를 5씩 증가시킴
0. 지난주 복습
11. 11
참조 프로젝트 : SampleThread
다운로드 : easyspub.com
Activity_main.xml의 소스
진행상태를 표기하기 위한
프로그래스 바를 정의
0. 지난주 복습
12. 12
MainActivity의 소스
ㅁ 앞에 그림은 서브스레드와
메시지 큐와의 메시지 전달,
하지만 서브스레드가 메인스
레드에게 메시지를 전달해야
되는 경우도 생기며, 이를 순
차적으로 처리하기 위해 메시
지 큐가 사용됨, 루퍼가 계속
돌며 메시지 큐에 있는 명령
들을 한 개 씩 처리
참조 교재 : Do it! 안드로이드 앱 프로그래밍0. 지난주 복습
13. 13
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com
실행화면
0. 지난주 복습
14. 14
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com
새로운 스레드 생성, 스레드를
생성하고 스레드를 위한 핸들러
를 만든다.
MainActivity의 소스
새로만든 스레드에서
루퍼(Lopper)를 실행
0. 지난주 복습
15. 15
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com
MainActivity의 소스
텍스트 뷰와 텍스를 수정할 수 있는
에디트 텍스트를 위한 레퍼런스 변수 선언
메인스레드를 위한 핸들러
서브스레드를 위한 핸들러
생성된 객체를 레퍼런스 변수 참조(이름)를
이용해 activity_main.xml에 이미 만들어진
텍스트 뷰와 에디트 텍스트의 속성을
알 수 있음
버튼이 눌릴 경우 스레드로 메시지를 보내고
해당 스레드를 실행
텍스트 뷰와 텍스를 수정할 수 있는
에디트 텍스트를 위한 객체 생성
0. 지난주 복습
16. 16
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com
MainActivity의 소스
새로 만든 스레드 핸들러,
메인 스레드의 핸들러로 메시시 전송
새로 만든 스레드 핸들러로 받은
메시지를 메인 스레드 핸들러에서
에디트텍스트에 메시로 표시
0. 지난주 복습
17. 17
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com1. 스레드와 애니메이션
실행화면
18. 18
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com1. 스레드와 애니메이션
실행화면
19. 19
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com1. 스레드와 애니메이션
실행화면
20. 20
참조 프로젝트 : SampleLopper
다운로드 : easyspub.com1. 스레드와 애니메이션
실행화면
21. 21
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com1. 스레드와 애니메이션
Activity_main.xml
애니메이션을 보여줄 뷰 만듬
22. 22
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
콜백 인터페이스 설정
* 콜백이란? = 캐치볼, 탁구, 전화
상대방을 호출하고 일정시간(조건)후에
다시 호출 받음
ThreadAnimationView.java
23. 23
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
이미지 스레드 객체 생성
ThreadAnimationView.java
24. 24
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
서피스 뷰를 위한 홀더 선언
25. 25
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
서피스 뷰를 위한 홀더 선언
* 서피스 뷰란? 3D지원을 위해 OpenGL ES 라이브러리 포함
2D그래픽도 지원하며 빠른성능의 2D구현 가능
26. 26
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
애니메이션을 보여줄 크기에 대한 변수와
어떤 그림을 보여줄지에 대한 변수 선언
27. 27
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
이미지를 저장할 배열,
각각 안드로이드 이모티콘과
사각형(배경)을 그림
28. 28
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
스레드 생성자
29. 29
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
각각의 이모티콘과 배경에
어떤 이미지가 들어갈지
설정
30. 30
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
스레드 실행
31. 31
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
스레드간 동기화를 위해
Synchronized를 사용
32. 32
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
Sleep(ms)를 이용해 해당 시간
만큼의 간격을 두고 스레드 실행
Dodraw메소드를 사용해 화면에 표시
33. 33
2. 트윈 애니메이션 참조 교재 : Do it! 안드로이드 앱 프로그래밍
- 보여줄 대상을 적절히 연산 후 그 결과를 연속적으로 디스플레이
->한 개의 대상만 있으면 충분
- 대상과 효과로 구분
- 대상 : 뷰, 그리기 객체
* 뷰 : 위젯과 레이아웃 모두 포함, 그리기 객체 : drawable
- 효과 : 위치 이동, 확대/축소, 회전, 투명도
* 위치 이동 : translate, 확대/축소 : Scale, 회전 : Rotate, 투명도 : Alpha
34. 34
2. 트윈 애니메이션
참조 프로젝트 : SampleTwinAnimation
다운로드 : easyspub.com
실행화면
35. 35
2. 트윈 애니메이션
참조 프로젝트 : SampleTwinAnimation
다운로드 : easyspub.com
Scale.xml
Scale2.xml
트윈 애니메이션을 위한 Action
정보는 XML리소스 or 자바 코드
에서 직접 객체로 만듬
36. 36
2. 트윈 애니메이션
참조 프로젝트 : SampleTwinAnimation
다운로드 : easyspub.com
Scale.xml
Scale2.xml
트윈 애니메이션을 위한 Action
정보는 XML리소스 or 자바 코드
에서 직접 객체로 만듬
Duration은 에니메이션
지속 시간
37. 37
2. 트윈 애니메이션
참조 프로젝트 : SampleTwinAnimation
다운로드 : easyspub.com
Scale.xml
Scale2.xml
트윈 애니메이션을 위한 Action
정보는 XML리소스 or 자바 코드
에서 직접 객체로 만듬
pivotX/Y는 에니메이션이
실행되는 동안의 축(기준)
을 의미
38. 38
2. 트윈 애니메이션
참조 프로젝트 : SampleTwinAnimation
다운로드 : easyspub.com
Scale.xml
Scale2.xml
트윈 애니메이션을 위한 Action
정보는 XML리소스 or 자바 코드
에서 직접 객체로 만듬
From(to)X/Yscale는
시작과 끝의 크기
비율을 지정해줌
39. 39
2. 트윈 애니메이션
참조 프로젝트 : SampleTwinAnimation
다운로드 : easyspub.com
리소스에 정의한
40. 40
2. 트윈 애니메이션
참조 프로젝트 : SampleTwinAnimation
다운로드 : easyspub.com
뷰의 애니메이션 시작