Presentation is loading. Please wait.

Presentation is loading. Please wait.

이벤트 처리  GUI 운영체제는 이벤트 드리븐으로 동작한다.  사용자와 상호 작용하려면 이벤트를 매끄럽게 처리하는 기술이 필요하다.  안드로이드에는 이벤트를 처리하는 다양한 방법이 있다.  팀 작업을 위해 모든 방법을 숙지해야 하며 자바의 고급 문법이 사용된다.

Similar presentations


Presentation on theme: "이벤트 처리  GUI 운영체제는 이벤트 드리븐으로 동작한다.  사용자와 상호 작용하려면 이벤트를 매끄럽게 처리하는 기술이 필요하다.  안드로이드에는 이벤트를 처리하는 다양한 방법이 있다.  팀 작업을 위해 모든 방법을 숙지해야 하며 자바의 고급 문법이 사용된다."— Presentation transcript:

1 이벤트 처리  GUI 운영체제는 이벤트 드리븐으로 동작한다.  사용자와 상호 작용하려면 이벤트를 매끄럽게 처리하는 기술이 필요하다.  안드로이드에는 이벤트를 처리하는 다양한 방법이 있다.  팀 작업을 위해 모든 방법을 숙지해야 하며 자바의 고급 문법이 사용된다.

2 EventListener  리스너 (Listener) : 이벤트를 처리하는 범용적인 방법  리스너 등록 메서드 : set 리스너 - void setOnTouchListener (View.OnTouchListener l) - void setOnKeyListener (View.OnKeyListener l) - void setOnClickListener (View.OnClickListener l) - void setOnLongClickListener (View.OnLongClickListener l) - void setOnFocusChangeListener (View.OnFocusChangeListener l)  인터페이스 구현, 리스너 객체 생성, 이벤트와 연결 과정을 거쳐 사용

3 EventListener 구현  인터페이스는 임의의 클래스가 구현할 수 있다.  액티비티가 구현 : 코드는 짧아지지만 구조적으로 바람직하지 못하며 뷰의 독립성이 떨어진다.  뷰가 구현 : 인터페이스 구현을 위해 상속을 받아야 하는 문제가 있다.  두 방법은 특정한 조건이 만족될 때만 사용하는 것이 바람직하다.

4 EventListener 구현  이벤트 연결 방법 View.setOnClickListener(OnClickListener clickListener) View.setOnTouchListener(OnTouchListener touchListener) View.setOnLongClickListener(OnLongClickListener longClickListener)  사용 예 1) View.setOnClickListener(clickListener); ClickListenerClass clickListener = new ClickListenerClass(); class ClickListenerClass clickListener implements OnClickListener { @Override public void onClick(View view) { // 클릭시 동작 정의 }

5 EventListener 구현  사용 예 2) public class MainActivity extends Activity implements OnClickListener @Override protected void onCreate(Bundle savedInstanceState) {.... 생략 View.setOnClickListener(this);.... 생략 } @Override public void onClick(View v) { // 클릭시 동작 정의 }

6 EventListener 구현 – 콜백 메소드 재정의  사용하려는 뷰 클래스를 상속받아서 콜백 메소드를 재정의하는 방법  단점 - 메소드를 재정의 하기 위해서 반드시 클래스를 상속받아야 함 - 안드로이드에서 제공하는 표준 위젯을 그대로 사용하지 못하고 항상 수정하는 작업을 한단계 더 거쳐야 함  장점 - 위젯 자체에 이벤트 정의가 되어 있으므로 잘 만들어 놓으면 업무 효율 상승

7 EventListener 구현 – 콜백 메소드 재정의  사용하려는 뷰 클래스를 상속받아서 콜백 메소드를 재정의하는 방법

8 EventListener 구현 – 인터페이스 구현 1  별도의 클래스를 만든 후 리스너 인터페이스를 구현하는 방법

9 EventListener 구현 – 인터페이스 구현 2  액티비티가 직접 리스너 인터페이스를 구현

10 EventListener 구현 – 익명 InnerClass 1  익명 이너 클래스 문법을 활용하여 리스너 클래스 선언을 생략하는 방법  객체 생성이 한번만 가능함 ( 객체가 생성되면서 코드가 정의됨 )  코드가 짧아지고 간결함

11 EventListener 구현 – 익명 InnerClass 2  익명 이너 클래스 문법을 활용하여 리스너 클래스 선언을 생략하는 방법  객체 생성이 한번만 가능함 ( 객체가 생성되면서 코드가 정의됨 )  코드가 짧아지고 간결함

12 EventHandler 우선 순위  하나의 이벤트를 여러 객체에서 처리할 수 있다.  중복 정의되어 있을 경우 우선 순위에 따라 호출된다.  좁은 범위일수록 우선 순위가 높다.  리턴값으로 다음 순위의 핸들러 호출 여부를 결정한다.

13 외부 변수 액세스  이너 클래스는 외부 클래스의 멤버를 참조할 수 있다.  핸들러로 전달할 값을 멤버로 선언하는 것은 구조적으로 바람직하지 않다.  지역 변수를 핸들러로 전달할 때는 반드시 final 로 선언해야 한다.  전달받은 인수를 핸들러로 전달할 때는 final 로 사본을 복사한 후 사용하거나 인수를 final 로 선언한다.

14 외부 변수 액세스 // 멤버변수 사용

15 터치 입력  손가락으로 화면을 누를 때 발생한다. - boolean onTouchEvent (MotionEvent event) - boolean onTouch (View v, MotionEvent event)  콜백에 비해 리스너는 이벤트 대상 뷰를 인수로 전달받는다.  getAction : 화면에서 어떤 동작을 했는지를 전달한다.  getX, getY : 터치한 좌표

16 키보드 입력  키보드 또는 화면 키보드를 눌렀을 때 발생한다. - boolean onKeyDown (int keyCode, KeyEvent event) - boolean onKey (View v, int keyCode, KeyEvent event)  인수로 키코드와 액션이 전달된다.  키보드만으로 동작하는 앱을 만들어서는 안된다.

17 클릭 이벤트  콜백은 없으며 View.OnClickListener 리스너로 이벤트를 받아야 한다. 클릭시 다음 메서드가 호출된다. - void onClick (View v)  비슷한 핸들러는 하나로 통합한다. 임시 객체를 사용할 수 없으며 이름이 있어야 한다.  공유 핸들러는 리스너의 getId 메서드로 클릭된 버튼을 알아낸다.  XML 리소스의 onClick 속성으로 핸들러 메서드를 지정할 수 있다.

18 롱클릭 이벤트  누른 채로 일정 시간을 대기할 때 발생한다. 리스너로 처리한다. - void setOnLongClickListener (View.OnLongClickListener l) - boolean onLongClick (View v)  클릭과 유사하되 리턴값으로 클릭 이벤트 발생 여부를 통제한다.  true 를 리턴하면 처리를 끝낸다.  false 를 리턴하면 클릭 이벤트가 추가로 발생한다.  리턴값은 프로그램의 논리에 따라 달라진다.  롱클릭은 명령을 숨겨놓을 수 있는 수단이지만 별도의 설명이 필요하다는 면에서 비직관적이다.

19 포커스 관리  포커스를 가진 뷰는 다른 색으로 강조된다.  터치 모드에서는 포커스 표시가 생략된다.  터치 모드는 시스템이 관리하며 사용자에 의해서만 바뀔 뿐 코드에서는 변 경할 수 없다.  포커스 가능 여부는 속성이나 메서드로 지정한다.  포커스 순서를 속성으로 임의 지정 가능하다.


Download ppt "이벤트 처리  GUI 운영체제는 이벤트 드리븐으로 동작한다.  사용자와 상호 작용하려면 이벤트를 매끄럽게 처리하는 기술이 필요하다.  안드로이드에는 이벤트를 처리하는 다양한 방법이 있다.  팀 작업을 위해 모든 방법을 숙지해야 하며 자바의 고급 문법이 사용된다."

Similar presentations


Ads by Google