42
JAVA, Android 스스스 2015.06.16 스스스 1

Java, android 스터티10

Embed Size (px)

Citation preview

Page 1: Java, android 스터티10

1

JAVA, Android 스터디

2015.06.16김희준

Page 2: Java, android 스터티10

2

ㅁ 스레드 (Thread) 의 필요성

- 메인 액티비티는 하나의 프로세스로 처리 * 대기시간이 길어질 시 많은 시간이 필요

- 멀티스레디 방식으로 해결 가능 , 메모리 리소스 공유

- 리소스를 공유하기 때문에 데드락 (Deadlock) 발생 가능

- 런타임 예외라서 찾기가 힘듬

- 안드로이드에선 자바의 표준 Thread 지원

참조 교재 : Do it! 안드로이드 앱 프로그래밍0. 지난주 복습

Page 3: Java, android 스터티10

3

실행화면

참조 프로젝트 : SampleJavaThread다운로드 : easyspub.com0. 지난주 복습

Page 4: Java, android 스터티10

4

참조 프로젝트 : SampleJavaThread다운로드 : easyspub.com

버튼 터치시 스레드에서 받은값을 출력 함

MainActivity 의 소스

0. 지난주 복습

Page 5: Java, android 스터티10

5

참조 프로젝트 : SampleJavaThread다운로드 : easyspub.com

MainActivity 의 소스

화면이 보이고 있을때스레드를 실행

화면이 꺼져 있을때 스레드를 중지

0. 지난주 복습

Page 6: Java, android 스터티10

6

ㅁ 프로세스가 생성되면 메인스레드는 메시지 큐를 실행 , 메시지 큐를 이용해 메인 스레드가 처리할 메시지를 전달 하는 것이 핸들러 클래스

스레드와 스레드 핸들러 플로우 차트

참조 교재 : Do it! 안드로이드 앱 프로그래밍0. 지난주 복습

Page 7: Java, android 스터티10

7

참조 프로젝트 : SampleThread다운로드 : easyspub.com

실행화면

0. 지난주 복습

Page 8: Java, android 스터티10

8

참조 프로젝트 : SampleThread다운로드 : easyspub.com

MainActivity 의 소스

스레드 핸들러 변수 선언과새로운 핸들러 객체 생성

0. 지난주 복습

Page 9: Java, android 스터티10

9

참조 프로젝트 : SampleThread다운로드 : easyspub.com

MainActivity 의 소스

프로그래스 바 ( 가로로 긴 막대 ) 0 으로 초기화액티비티 시작 시 스레드 생성 후 실행

1 초마다 핸들러로 메시지 전송스레드에서 작업 상태나 결과를 핸들러의 sendMessage() 로 전송

0. 지난주 복습

Page 10: Java, android 스터티10

10

참조 프로젝트 : SampleThread다운로드 : easyspub.com

handleMessage() 메소드 내에서전달된 정보를 이용해 UI 업데이트

MainActivity 의 소스

새로운 Handler 클래스 정의 ,프로그래스 바를 5 씩 증가시킴

0. 지난주 복습

Page 11: Java, android 스터티10

11

참조 프로젝트 : SampleThread다운로드 : easyspub.com

Activity_main.xml 의 소스

진행상태를 표기하기 위한 프로그래스 바를 정의

0. 지난주 복습

Page 12: Java, android 스터티10

12

MainActivity 의 소스

ㅁ 앞에 그림은 서브스레드와 메시지 큐와의 메시지 전달 , 하지만 서브스레드가 메인스레드에게 메시지를 전달해야 되는 경우도 생기며 , 이를 순차적으로 처리하기 위해 메시지 큐가 사용됨 , 루퍼가 계속 돌며 메시지 큐에 있는 명령들을 한 개 씩 처리

참조 교재 : Do it! 안드로이드 앱 프로그래밍0. 지난주 복습

Page 13: Java, android 스터티10

13

참조 프로젝트 : SampleLopper다운로드 : easyspub.com

실행화면

0. 지난주 복습

Page 14: Java, android 스터티10

14

참조 프로젝트 : SampleLopper다운로드 : easyspub.com

새로운 스레드 생성 , 스레드를생성하고 스레드를 위한 핸들러를 만든다 .

MainActivity 의 소스

새로만든 스레드에서 루퍼 (Lopper) 를 실행

0. 지난주 복습

Page 15: Java, android 스터티10

15

참조 프로젝트 : SampleLopper다운로드 : easyspub.com

MainActivity 의 소스

텍스트 뷰와 텍스를 수정할 수 있는에디트 텍스트를 위한 레퍼런스 변수 선언

메인스레드를 위한 핸들러서브스레드를 위한 핸들러

생성된 객체를 레퍼런스 변수 참조 ( 이름 ) 를 이용해 activity_main.xml 에 이미 만들어진텍스트 뷰와 에디트 텍스트의 속성을 알 수 있음

버튼이 눌릴 경우 스레드로 메시지를 보내고해당 스레드를 실행

텍스트 뷰와 텍스를 수정할 수 있는에디트 텍스트를 위한 객체 생성

0. 지난주 복습

Page 16: Java, android 스터티10

16

참조 프로젝트 : SampleLopper다운로드 : easyspub.com

MainActivity 의 소스

새로 만든 스레드 핸들러 ,메인 스레드의 핸들러로 메시시 전송

새로 만든 스레드 핸들러로 받은 메시지를 메인 스레드 핸들러에서에디트텍스트에 메시로 표시

0. 지난주 복습

Page 17: Java, android 스터티10

17

참조 프로젝트 : SampleLopper다운로드 : easyspub.com1. 스레드와 애니메이션

실행화면

Page 18: Java, android 스터티10

18

참조 프로젝트 : SampleLopper다운로드 : easyspub.com1. 스레드와 애니메이션

실행화면

Page 19: Java, android 스터티10

19

참조 프로젝트 : SampleLopper다운로드 : easyspub.com1. 스레드와 애니메이션

실행화면

Page 20: Java, android 스터티10

20

참조 프로젝트 : SampleLopper다운로드 : easyspub.com1. 스레드와 애니메이션

실행화면

Page 21: Java, android 스터티10

21

참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

1. 스레드와 애니메이션

Activity_main.xml

애니메이션을 보여줄 뷰 만듬

Page 22: Java, android 스터티10

22

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

콜백 인터페이스 설정 * 콜백이란 ? = 캐치볼 , 탁구 , 전화 상대방을 호출하고 일정시간 ( 조건 ) 후에 다시 호출 받음

ThreadAnimationView.-java

Page 23: Java, android 스터티10

23

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

이미지 스레드 객체 생성

ThreadAnimationView.-java

Page 24: Java, android 스터티10

24

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

서피스 뷰를 위한 홀더 선언

Page 25: Java, android 스터티10

25

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

서피스 뷰를 위한 홀더 선언 * 서피스 뷰란 ? 3D 지원을 위해 OpenGL ES 라이브러리 포함 2D 그래픽도 지원하며 빠른성능의 2D 구현 가능

Page 26: Java, android 스터티10

26

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

애니메이션을 보여줄 크기에 대한 변수와 어떤 그림을 보여줄지에 대한 변수 선언

Page 27: Java, android 스터티10

27

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

이미지를 저장할 배열 , 각각 안드로이드 이모티콘과 사각형 ( 배경 ) 을 그림

Page 28: Java, android 스터티10

28

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

스레드 생성자

Page 29: Java, android 스터티10

29

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

각각의 이모티콘과 배경에어떤 이미지가 들어갈지 설정

Page 30: Java, android 스터티10

30

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

스레드 실행

Page 31: Java, android 스터티10

31

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

스레드간 동기화를 위해Synchronized 를 사용

Page 32: Java, android 스터티10

32

1. 스레드와 애니메이션 참조 프로젝트 : SampleThreadAnima-tion다운로드 : easyspub.com

ThreadAnimationView.-java

Sleep(ms) 를 이용해 해당 시간만큼의 간격을 두고 스레드 실행

Dodraw 메소드를 사용해 화면에 표시

Page 33: Java, android 스터티10

33

2. 트윈 애니메이션 참조 교재 : Do it! 안드로이드 앱 프로그래밍

- 보여줄 대상을 적절히 연산 후 그 결과를 연속적으로 디스플레이 -> 한 개의 대상만 있으면 충분

- 대상과 효과로 구분

- 대상 : 뷰 , 그리기 객체 * 뷰 : 위젯과 레이아웃 모두 포함 , 그리기 객체 : drawable

- 효과 : 위치 이동 , 확대 / 축소 , 회전 , 투명도 * 위치 이동 : translate, 확대 / 축소 : Scale, 회전 : Rotate, 투명도 : Alpha

Page 34: Java, android 스터티10

34

2. 트윈 애니메이션 참조 프로젝트 : SampleTwinAnimation다운로드 : easyspub.com

실행화면

Page 35: Java, android 스터티10

35

2. 트윈 애니메이션 참조 프로젝트 : SampleTwinAnimation다운로드 : easyspub.com

Scale.xml

Scale2.xml

트윈 애니메이션을 위한 Action정보는 XML 리소스 or 자바

코드에서 직접 객체로 만듬

Page 36: Java, android 스터티10

36

2. 트윈 애니메이션 참조 프로젝트 : SampleTwinAnimation다운로드 : easyspub.com

Scale.xml

Scale2.xml

트윈 애니메이션을 위한 Action정보는 XML 리소스 or 자바

코드에서 직접 객체로 만듬

Duration 은 에니메이션지속 시간

Page 37: Java, android 스터티10

37

2. 트윈 애니메이션 참조 프로젝트 : SampleTwinAnimation다운로드 : easyspub.com

Scale.xml

Scale2.xml

트윈 애니메이션을 위한 Action정보는 XML 리소스 or 자바

코드에서 직접 객체로 만듬

pivotX/Y 는 에니메이션이실행되는 동안의 축 ( 기준 )을 의미

Page 38: Java, android 스터티10

38

2. 트윈 애니메이션 참조 프로젝트 : SampleTwinAnimation다운로드 : easyspub.com

Scale.xml

Scale2.xml

트윈 애니메이션을 위한 Action정보는 XML 리소스 or 자바

코드에서 직접 객체로 만듬

From(to)X/Yscale 는시작과 끝의 크기 비율을 지정해줌

Page 39: Java, android 스터티10

39

2. 트윈 애니메이션 참조 프로젝트 : SampleTwinAnimation다운로드 : easyspub.com

리소스에 정의한

Page 40: Java, android 스터티10

40

2. 트윈 애니메이션 참조 프로젝트 : SampleTwinAnimation다운로드 : easyspub.com

뷰의 애니메이션 시작

Page 41: Java, android 스터티10

41

Q & A

Page 42: Java, android 스터티10

42

Thank you!!