Contents 이벤트 핸들러 -  이벤트 처리 -  핸들러의 우선순위 -  외부변수 엑세스 여러가지 이벤트 -  터치 입력 -  키보드 입력 -  위젯의 이벤트 처리 -  포커스 관리 -  타이머 이벤트
이벤트 핸들러 이벤트 처리 - GUI  채택 -  사용은 편리 ,  개발은 어려움 -  이벤트를 처리하는 다양한 방법 -  콜백 메서드 재정의 -  리스너 인터페이스 -  익명 이너클래스
이벤트 처리방법 콜백 메서드 재정의 콜백 메서드  :  특정 이벤트가 발생 하였을 때 시스템에 의해 자동으로 호출되는 메서드 재정의를 하려면 해당 클래스를 상속 받아야 한다 . (OOP 개념 ) 단점  :  매번 해당 클래스를 상속받아야 한다 .  콜백 메서드로 존재하지 않는 이벤트가 있다 .
이벤트 처리방법 리스너 인터페이스 구현 리스너 인터페이스  :  특정 이벤트를 처리하는 인터페이스 1. 리스너를 구현하는 클래스를 선언하고 추상메서드를 구현 2. 리스너 객체를 선언하고 생성한다 . 3. 리스너 객체를 뷰의 이벤트와 연결한다 . 단점  :  인터페이스 구현을 위해 클래스를 선언해야 하며 ,  객체를 생성하고 이벤트와 연결해줘야 한다 . ( 번거롭다 )
이벤트 처리방법 익명 이너클래스 사용 이너클래스 :  클래스 안에서 정의된 클래스 (  자바에서만 제공되는 문법  ) 익명이너클래스  :  상위 클래스나 인터페이스의 메서드 하나를 재정의하기 위해 클래스를 선언하는 경우 ,  그리고 그 클래스의 객체가 단 하나만 필요한 경우는 굳이 클래스를 선언할 필요 없이 상속과 재정의를 동시에 할 수 있다 .
이벤트 처리방법 익명 이너클래스 비교 ◆  일반적인 코드 class MyClass implements Interface {  메서드 구현 } MyClass obj = new MyClass(); - Interface 를 상속받고 , class  구현부에서  method 를 재정의하고  class 의 객체를 생성 ◆  축약된 코드 Interface obj = new Interface() { 메서드 구현 }; -  바로 직관적으로  Interface 를 클래스처럼 객체생성해서  method 를 재정의 ( class 가 아니므로 객체를 또 생성할 수 없다  )
이벤트 처리방법 익명 이너클래스의 임시객체사용 임시객체  :  객체에 이름을 주고 생성한 후 메서드로 전달하는 것이 아니라 메서드 인수 목록에서  new  연산자로 바로 생성하는 것
이벤트 처리방법 임시객체의 비교 ◆  이름있는 객체 사용 Class obj = new Class(); Method( obj ); - Class 의 객체를 생성한 뒤에 생성한 객체를 메서드의 인자로 넘겨줌 ◆  임시객체 사용 Method( new Class() ); - Class 의 객체를 생성하는 것과 동시에 메서드의 인자로 넘겨줌  (  이름이 없는 개체가 생성됨  )
핸들러의 우선순위 우선순위 좁은 범위일 수록 우선순위가 높다 . 이벤트 리스너 뷰의 콜백 메서드 액티비티의 콜백 메서드 핸들러의  return 값으로 다음 순위 메서드의 호출기회를 통제할 수 있다 . true 를 리턴하면 해당 이벤트가 종료되며 ,  false 를 리턴하면 다음 순위의 메서드가 호출된다 .
외부 변수 엑세스 핸들러내에서 검색하여 사용하기 예 )  public boolean onTouch(View v, MotionEvent event) {    if( event.getAction() == MotionEvent event ) {   TextView text = (TextView)findViewByID(R.id.text); text.setText(“Touched”); return true; } return false;   } -  외부 변수를 핸들러내에서 검색하여 사용하는 것은 번거로우며 실행속도에도 불리하다 .
외부 변수 엑세스 외부클래스의 멤버로 선언해두고  Create 함수에서 검색해두고 사용하기 예 ) public class handle extends Activity { TextView text;  public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); text = (TextView)findViewByID(R.id.text);  …  public boolean onTouch(View v, MotionEvent event) {    if( event.getAction() == MotionEvent event ) { text.setText(“Touched”); return true; } return false;   }
외부 변수 엑세스 외부클래스의 멤버로 선언해두고  Create 함수에서 검색해두고 사용하기 -  이너클래스는 외부클래스의 멤버를 자유자재로 사용할 수 있고 ,  또한 미리 검색해둔 멤버를 참조하므로 훨씬 효율적이다 .  -  그러나 리스너가 아주 많을 경우 외부클래스가 너무 뚱뚱해진다 .
외부 변수 엑세스 외부클래스의 메서드의 지역변수로 선언후에 사용하기 예 ) public class handle extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView text = (TextView)findViewByID(R.id.text);  …  public boolean onTouch(View v, MotionEvent event) {    if( event.getAction() == MotionEvent event ) { text.setText(“Touched”); return true; } return false;   }
외부 변수 엑세스 외부클래스의 메서드의 지역변수로 선언후에 사용하기 -  외부클래스가 뚱뚱해지지 않도록 메서드안에 지역변수로 선언하는방법 .  -  메서드의 지역변수를 이너클래스에서 사용하려면 일반변수로 선언하면 안되고  final  변수로 선언해야만 한다 . ( 이유는 해당메서드가 종료되면 변수가 메모리에서 사라지는 것을 방지  )
포커스 관리 키보드 이벤트는 포커스를 가진 뷰에게만 전달된다 . - View 의  setFocusable()  함수와  setFocusableInTouchMode()  함수를 이용하여 ,  터치모드나 일반모드에서 포커스를 받을 수 있도록 한다 . p.s  터치모드 :  화면을 터치했을때의 모드 일반모드 :  키보드를 눌렀을때의 모드
 

More Related Content

PPTX
[Pl in c++] 6. battle ship 3
PPTX
Game Design patterns, Visitor, State, FSM pattern
PDF
9 object class
PDF
CRUD Pattern in Ajax
PDF
[Swift] Properties
PPTX
Swift 0x17 generics
PDF
[JavaScript Library] - Simple jQuery
PDF
Ajax ellen seon_ss
[Pl in c++] 6. battle ship 3
Game Design patterns, Visitor, State, FSM pattern
9 object class
CRUD Pattern in Ajax
[Swift] Properties
Swift 0x17 generics
[JavaScript Library] - Simple jQuery
Ajax ellen seon_ss

What's hot (19)

PPT
Python class
PDF
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
PDF
Javascript 101
PPTX
HTML5의 web worker
PPTX
디자인 패턴(Observer, visitor)
PPTX
Java script의 이해
PPTX
Hacosa j query 3th
PPTX
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
PPTX
Windows via c/c++ ch03. 커널오브젝트
PPTX
javascript03
PPTX
Effective c++ 정리 chapter 4
PPT
Java script
PPTX
Hacosa j query 11th
PPTX
모던 자바스크립트 Deep Dive Review
PPT
자바와 사용하기2
PPTX
Hacosa j query 8th
PPTX
Effective c++ 정리 chapter 8
PPTX
Effective C++ 정리 chapter 3
PDF
추억의 자바스크립트
Python class
[DevOn 2013] Backbone.js로 능동적 M-V 디자인 구현하기
Javascript 101
HTML5의 web worker
디자인 패턴(Observer, visitor)
Java script의 이해
Hacosa j query 3th
이것이 자바다 Chap. 6 클래스(CLASS)(KOR)
Windows via c/c++ ch03. 커널오브젝트
javascript03
Effective c++ 정리 chapter 4
Java script
Hacosa j query 11th
모던 자바스크립트 Deep Dive Review
자바와 사용하기2
Hacosa j query 8th
Effective c++ 정리 chapter 8
Effective C++ 정리 chapter 3
추억의 자바스크립트
Ad

Viewers also liked (20)

PDF
Driving digital innovation through the internet of everything
PPTX
Cisco Security DNA
PDF
Reducing Cost with DNA Automation
PDF
Happy Mind Fitness - a workshop presentation
PPT
Love me, fuseli.illustrated.final
PPTX
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
PPTX
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
PPS
Discours lodo cousins
PPT
GAIT value network 2005 06
PPT
블로그의이해
PPTX
G+ Summer C Study 20130709(3일차)
PPTX
2012 05 corp fin 1c
PPTX
Teacher Ed Brunch Pwr Point Heidi
PDF
Equipo 3 formula costo de inversion en automatizacion
PPT
Terapia aba (análisis aplicado del comportamiento)
PPTX
G+ Summer C Study 20130716(6일차)
PDF
PROYECTO PROPUESTA PARA APERTURA DE DOS NUEVAS LICENCIATURAS
DOCX
Equipo 3 tema 3 diseño y planeación de estrategia corporativa
PPTX
G+ Summer C Study 20130711(4일차)
Driving digital innovation through the internet of everything
Cisco Security DNA
Reducing Cost with DNA Automation
Happy Mind Fitness - a workshop presentation
Love me, fuseli.illustrated.final
SecureWorld Kim - Infosec at Ludicrous Speeds - Rugged DevOps 6a
Kim IT Pro Forum Eugene: IT at Ludicrous Speeds - rugged dev ops
Discours lodo cousins
GAIT value network 2005 06
블로그의이해
G+ Summer C Study 20130709(3일차)
2012 05 corp fin 1c
Teacher Ed Brunch Pwr Point Heidi
Equipo 3 formula costo de inversion en automatizacion
Terapia aba (análisis aplicado del comportamiento)
G+ Summer C Study 20130716(6일차)
PROYECTO PROPUESTA PARA APERTURA DE DOS NUEVAS LICENCIATURAS
Equipo 3 tema 3 diseño y planeación de estrategia corporativa
G+ Summer C Study 20130711(4일차)
Ad

Similar to Android Programming (20)

PPTX
Design patterns
 
PPTX
11 object expressions_and_declarations
PPTX
Effective c++chapter4
PPTX
Windows via c++ part 1
PPT
Working Effectively With Legacy Code - xp2005
PDF
Javascript 조금 더 잘 알기
PPTX
파이썬+클래스+구조+이해하기 20160310
PDF
Objective-C Runtime Programming Guide
PPTX
Effective c++(chapter3,4)
PDF
Swift3 subscript inheritance initialization
PPTX
파이썬+객체지향+이해하기 20160131
PPTX
파이썬 객체 클래스 이해하기
PPTX
Effective c++ 1~8장
PDF
The c++ programming language 10장 클래스 발표
PDF
Java 강의자료 ed11
PPTX
이펙티브 C++ 5,6 장 스터디
PPTX
디자인패턴 1~13
PPTX
Head first디자인패턴 1~13_희민_호준
PDF
Java class
PDF
Java_05 class
Design patterns
 
11 object expressions_and_declarations
Effective c++chapter4
Windows via c++ part 1
Working Effectively With Legacy Code - xp2005
Javascript 조금 더 잘 알기
파이썬+클래스+구조+이해하기 20160310
Objective-C Runtime Programming Guide
Effective c++(chapter3,4)
Swift3 subscript inheritance initialization
파이썬+객체지향+이해하기 20160131
파이썬 객체 클래스 이해하기
Effective c++ 1~8장
The c++ programming language 10장 클래스 발표
Java 강의자료 ed11
이펙티브 C++ 5,6 장 스터디
디자인패턴 1~13
Head first디자인패턴 1~13_희민_호준
Java class
Java_05 class

More from Jake Yoon (20)

PPTX
SOSCON 참관후기 공유세미나(1)
PPTX
SOAP REST 이해
PPTX
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰
PPTX
Google I/O Extended Korea Student #3 About - real Google I/O
PPTX
안드로이드 프로그래밍 정복 - Android Study #레이아웃전개
PPTX
Android virtualization을 통한 IoT구현
PPTX
2일차 20140402
PPTX
1일차 20140326
PPTX
Android Framework를 활용한 진정한 모바일 클라우드 이야기
PPTX
Dark Cloud
PPTX
소설네트워크 for iOS
PPTX
passU
PPTX
오픈소스하드웨어
PPTX
G+ Summer C Study 20130718(8일차)
PPTX
G+ Summer C Study 20130717(7일차)
PPTX
G+ Summer C Study 20130712(5일차)
PPTX
G+ Summer C Study 20130705(2일차)
PPTX
G+ Summer C Study 20130703(1일차)
PPTX
Jake yoon세미나
PPTX
소설네트워크 메뉴얼
SOSCON 참관후기 공유세미나(1)
SOAP REST 이해
안드로이드 프로그래밍 정복 - Android Study #어댑터뷰
Google I/O Extended Korea Student #3 About - real Google I/O
안드로이드 프로그래밍 정복 - Android Study #레이아웃전개
Android virtualization을 통한 IoT구현
2일차 20140402
1일차 20140326
Android Framework를 활용한 진정한 모바일 클라우드 이야기
Dark Cloud
소설네트워크 for iOS
passU
오픈소스하드웨어
G+ Summer C Study 20130718(8일차)
G+ Summer C Study 20130717(7일차)
G+ Summer C Study 20130712(5일차)
G+ Summer C Study 20130705(2일차)
G+ Summer C Study 20130703(1일차)
Jake yoon세미나
소설네트워크 메뉴얼

Android Programming

  • 1.  
  • 2. Contents 이벤트 핸들러 - 이벤트 처리 - 핸들러의 우선순위 - 외부변수 엑세스 여러가지 이벤트 - 터치 입력 - 키보드 입력 - 위젯의 이벤트 처리 - 포커스 관리 - 타이머 이벤트
  • 3. 이벤트 핸들러 이벤트 처리 - GUI 채택 - 사용은 편리 , 개발은 어려움 - 이벤트를 처리하는 다양한 방법 - 콜백 메서드 재정의 - 리스너 인터페이스 - 익명 이너클래스
  • 4. 이벤트 처리방법 콜백 메서드 재정의 콜백 메서드 : 특정 이벤트가 발생 하였을 때 시스템에 의해 자동으로 호출되는 메서드 재정의를 하려면 해당 클래스를 상속 받아야 한다 . (OOP 개념 ) 단점 : 매번 해당 클래스를 상속받아야 한다 . 콜백 메서드로 존재하지 않는 이벤트가 있다 .
  • 5. 이벤트 처리방법 리스너 인터페이스 구현 리스너 인터페이스 : 특정 이벤트를 처리하는 인터페이스 1. 리스너를 구현하는 클래스를 선언하고 추상메서드를 구현 2. 리스너 객체를 선언하고 생성한다 . 3. 리스너 객체를 뷰의 이벤트와 연결한다 . 단점 : 인터페이스 구현을 위해 클래스를 선언해야 하며 , 객체를 생성하고 이벤트와 연결해줘야 한다 . ( 번거롭다 )
  • 6. 이벤트 처리방법 익명 이너클래스 사용 이너클래스 : 클래스 안에서 정의된 클래스 ( 자바에서만 제공되는 문법 ) 익명이너클래스 : 상위 클래스나 인터페이스의 메서드 하나를 재정의하기 위해 클래스를 선언하는 경우 , 그리고 그 클래스의 객체가 단 하나만 필요한 경우는 굳이 클래스를 선언할 필요 없이 상속과 재정의를 동시에 할 수 있다 .
  • 7. 이벤트 처리방법 익명 이너클래스 비교 ◆ 일반적인 코드 class MyClass implements Interface { 메서드 구현 } MyClass obj = new MyClass(); - Interface 를 상속받고 , class 구현부에서 method 를 재정의하고 class 의 객체를 생성 ◆ 축약된 코드 Interface obj = new Interface() { 메서드 구현 }; - 바로 직관적으로 Interface 를 클래스처럼 객체생성해서 method 를 재정의 ( class 가 아니므로 객체를 또 생성할 수 없다 )
  • 8. 이벤트 처리방법 익명 이너클래스의 임시객체사용 임시객체 : 객체에 이름을 주고 생성한 후 메서드로 전달하는 것이 아니라 메서드 인수 목록에서 new 연산자로 바로 생성하는 것
  • 9. 이벤트 처리방법 임시객체의 비교 ◆ 이름있는 객체 사용 Class obj = new Class(); Method( obj ); - Class 의 객체를 생성한 뒤에 생성한 객체를 메서드의 인자로 넘겨줌 ◆ 임시객체 사용 Method( new Class() ); - Class 의 객체를 생성하는 것과 동시에 메서드의 인자로 넘겨줌 ( 이름이 없는 개체가 생성됨 )
  • 10. 핸들러의 우선순위 우선순위 좁은 범위일 수록 우선순위가 높다 . 이벤트 리스너 뷰의 콜백 메서드 액티비티의 콜백 메서드 핸들러의 return 값으로 다음 순위 메서드의 호출기회를 통제할 수 있다 . true 를 리턴하면 해당 이벤트가 종료되며 , false 를 리턴하면 다음 순위의 메서드가 호출된다 .
  • 11. 외부 변수 엑세스 핸들러내에서 검색하여 사용하기 예 ) public boolean onTouch(View v, MotionEvent event) { if( event.getAction() == MotionEvent event ) { TextView text = (TextView)findViewByID(R.id.text); text.setText(“Touched”); return true; } return false; } - 외부 변수를 핸들러내에서 검색하여 사용하는 것은 번거로우며 실행속도에도 불리하다 .
  • 12. 외부 변수 엑세스 외부클래스의 멤버로 선언해두고 Create 함수에서 검색해두고 사용하기 예 ) public class handle extends Activity { TextView text; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); text = (TextView)findViewByID(R.id.text); … public boolean onTouch(View v, MotionEvent event) { if( event.getAction() == MotionEvent event ) { text.setText(“Touched”); return true; } return false; }
  • 13. 외부 변수 엑세스 외부클래스의 멤버로 선언해두고 Create 함수에서 검색해두고 사용하기 - 이너클래스는 외부클래스의 멤버를 자유자재로 사용할 수 있고 , 또한 미리 검색해둔 멤버를 참조하므로 훨씬 효율적이다 . - 그러나 리스너가 아주 많을 경우 외부클래스가 너무 뚱뚱해진다 .
  • 14. 외부 변수 엑세스 외부클래스의 메서드의 지역변수로 선언후에 사용하기 예 ) public class handle extends Activity { public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView text = (TextView)findViewByID(R.id.text); … public boolean onTouch(View v, MotionEvent event) { if( event.getAction() == MotionEvent event ) { text.setText(“Touched”); return true; } return false; }
  • 15. 외부 변수 엑세스 외부클래스의 메서드의 지역변수로 선언후에 사용하기 - 외부클래스가 뚱뚱해지지 않도록 메서드안에 지역변수로 선언하는방법 . - 메서드의 지역변수를 이너클래스에서 사용하려면 일반변수로 선언하면 안되고 final 변수로 선언해야만 한다 . ( 이유는 해당메서드가 종료되면 변수가 메모리에서 사라지는 것을 방지 )
  • 16. 포커스 관리 키보드 이벤트는 포커스를 가진 뷰에게만 전달된다 . - View 의 setFocusable() 함수와 setFocusableInTouchMode() 함수를 이용하여 , 터치모드나 일반모드에서 포커스를 받을 수 있도록 한다 . p.s 터치모드 : 화면을 터치했을때의 모드 일반모드 : 키보드를 눌렀을때의 모드
  • 17.