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