ݺߣ

ݺߣShare a Scribd company logo
JAVA, Android 스터디
2015.06.16
김희준
1
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
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com1. 스레드와 애니메이션
Activity_main.xml
애니메이션을 보여줄 뷰 만듬
22
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
콜백 인터페이스 설정
* 콜백이란? = 캐치볼, 탁구, 전화
상대방을 호출하고 일정시간(조건)후에
다시 호출 받음
ThreadAnimationView.java
23
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
이미지 스레드 객체 생성
ThreadAnimationView.java
24
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
서피스 뷰를 위한 홀더 선언
25
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
서피스 뷰를 위한 홀더 선언
* 서피스 뷰란? 3D지원을 위해 OpenGL ES 라이브러리 포함
2D그래픽도 지원하며 빠른성능의 2D구현 가능
26
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
애니메이션을 보여줄 크기에 대한 변수와
어떤 그림을 보여줄지에 대한 변수 선언
27
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
이미지를 저장할 배열,
각각 안드로이드 이모티콘과
사각형(배경)을 그림
28
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
스레드 생성자
29
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
각각의 이모티콘과 배경에
어떤 이미지가 들어갈지
설정
30
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
스레드 실행
31
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : easyspub.com
ThreadAnimationView.java
스레드간 동기화를 위해
Synchronized를 사용
32
1. 스레드와 애니메이션
참조 프로젝트 : SampleThreadAnimation
다운로드 : 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
뷰의 애니메이션 시작
Q & A
41
Thank you!!
42

More Related Content

Java, android 스터티10

  • 2. 2 ㅁ 스레드(Thread)의 필요성 - 메인 액티비티는 하나의 프로세스로 처리 * 대기시간이 길어질 시 많은 시간이 필요 - 멀티스레디 방식으로 해결 가능, 메모리 리소스 공유 - 리소스를 공유하기 때문에 데드락(Deadlock)발생 가능 - 런타임 예외라서 찾기가 힘듬 - 안드로이드에선 자바의 표준 Thread지원 참조 교재 : Do it! 안드로이드 앱 프로그래밍0. 지난주 복습
  • 3. 3 실행화면 참조 프로젝트 : SampleJavaThread 다운로드 : easyspub.com0. 지난주 복습
  • 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 뷰의 애니메이션 시작