2014년 8월 18일 월요일

android event handler(안드로이드 이벤트 처리)

 크기가 작고 입력 장치가 부족한 모바일 장비는 터치 스크린을 최대한 활용하기 위해 예외없이 그래픽  사용자 인터페이스(GUI)를 채택한다. 화려한 그래픽 인터페이스는 사용하기 편리하지만 개발하기는 더 까다롭다. 미리 정의된 절차대로 동작하는 것이 아니라 사용자의 입력이나 시스템의 상황 변화에 의해 발생하는 이벤트에 적절히 반응하도록 작성해야 한다. 그러다 보니 이벤트를 매끄럽게 잘 처리하는 기술이 중요하다.

 사용되는 자바 문법: 인터페이스 구현 및 상속, 내부 클래스, 익명 클래스

 1. 콜백 메서드 재정의
     대표적인 콜백 : boolean onTouchEvent (MotionEvent event)
                            boolean onKeyDown (int keyCodeu, KeyEvent event)
                            boolean onKeyUp (int keyCode, KeyEvent event)
                            boolean onTrackballEvent (MotionEvent event)


  예제 : onTouchEvent를 받아서 처리하기


   public class HandleEvent extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
View vw = new MyView(this);
setContentView(vw);
}

class MyView extends View {
public MyView(Context context) {
super(context);
}

public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);
if (event.getAction() == MotionEvent.ACTION_DOWN) {
Toast.makeText(HandleEvent.this,"Touch Event Received",
Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
}
}

 *잘 모르는 것: View 클래스로 부터 MyView 클래스를 파생시켜 onTouchEvent 콜백 메서드를 재정의한다. 슈퍼클래스의 메서드를 직접 수정할 수는 없으니 재정의하려면 일단 상속부터 받아야 한다. 재정의된 메서드는 super의 메서드를 호출하여 부모에게 처리 기회를 먼저 제공하는 것이 보편적이다.


 2. 리스너 인터페이스 구현

  리스너는 특정 이벤트를 처리하는 인터페이스이다.

  1) 리스너를 상속받는 클래스를 선언하고 추상 메서드를 구현한다.
  2) 리스너 객체 TouchListner를 선언 및 생성한다.
  3) 준비된 리스너 객체를 뷰의 이벤트와 연결한다.


 3. 액티비티가 리스너 구현

 4. 뷰가 리스너 구형

 5. 익명 내부 클래스 사용

 6. 익명 내부 클래스의 임시 객체 사용




댓글 없음:

댓글 쓰기