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

Java, android 스터티9

  • 1.
  • 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! 안드로이드 앱 프로그래밍
  • 15.
    15 1. 스레드 실행화면 참조 프로젝트: SampleJavaThread 다운로드 : easyspub.com
  • 16.
    16 1. 스레드 참조 프로젝트: SampleJavaThread 다운로드 : easyspub.com 버튼 터치시 스레드에서 받은 값을 출력 함 MainActivity의 소스
  • 17.
    17 1. 스레드 참조 프로젝트: SampleJavaThread 다운로드 : easyspub.com MainActivity의 소스 화면이 보이고 있을때 스레드를 실행
  • 18.
    18 1. 스레드 참조 프로젝트: SampleJavaThread 다운로드 : easyspub.com MainActivity의 소스 화면이 꺼져 있을때 스레드를 중지
  • 19.
    19 2. 스레드 핸들러 ㅁ프로세스가 생성되면 메인스레드는 메시지 큐를 실행, 메시지 큐를 이용해 메인 스레드가 처리할 메시지를 전달 하는 것이 핸들러 클래스 스레드와 스레드 핸들러 플로우 차트 참조 교재 : Do it! 안드로이드 앱 프로그래밍
  • 20.
    20 2. 스레드 핸들러 참조프로젝트 : SampleThread 다운로드 : easyspub.com 실행화면
  • 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. 스레드로 메시지 전송
  • 42.
  • 43.