안드로이드 Event 처리
- 안드로이드에서는 이벤트를 처리하는 다양한 방법이 존재한다.
- 안드로이드에서 다양한 이벤트 처리 방법


1) 콜백 메서드 재정의
2) 리스너 인터페이스 구현
3) 액티비티 리스너 구현
4) 뷰 리스너 구현
5) 무명 클래스 사용


▶ 이벤트리스너란
- 한 개의 콜백 메서드를 가지고 있는 View 클래스 안에 선언된 인터페이스
- 이벤트가 발생될 때 안드로이드 프레임웍에 의해 호출된다.


▶ 콜백(callback) 메서드란
일반적인 경우 사용자가 호출함으로써 시스템에 전달되어 호출된 메서드를 실행한다. 그러나 콜백메서드는 일반메서드와 달리 반대로 시스템이 해당 메서드를 호출한다. 콜백메서드는 이벤트 처리와 같은 경우에만 사용된다.


▶ findViewById(int id)
뷰는 자신을 식별하기 위해 ID 를 정의한다. 뷰를 생성하고 애플리케이션에서 뷰를 참조하려면 뷰를 위한 고유 ID 가 필요하다. ID 는 일반적으로 XML 파일에 속성으로 정의한다. XML 에서 뷰에 ID 를 지정한다면 findViewById 메서드를 이용하여 애플리케이션에서 참조할 수 있다.
형식: View findViewById(int id)
설명: Finds a view that was identified by the id attribute from the XML that was processed in onCreate(Bundle).

예: Button b1=(Button)findViewById(R.id.button1);


▶ 이벤트 처리
뷰는 사용자의 동작, 즉 이벤트에 의하여 상호작용이 발생하는 영역이다. 뷰에서 발생하는 이벤트를 처리하려면 이벤트를 처리하는 코드를 작성하고, 이를 뷰와 연결해야 한다.
View 클래스는 이벤트를 처리하는 인터페이스인 다음과 같은 리스너를 제공한다.
OnClickListener: void onClick(View v)
==> 그 외의 리스너는 홈페이지에서 찾아보자.
http://developer.android.com/reference/android/view/View.html


[실습 1] 버튼을 클릭하면 텍스트뷰의 텍스트 내용을 변경한다.
- 텍스트뷰와 버튼이 있는 화면을 만든다. 이 때 텍스트뷰와 버튼 모두 ID 가 정의되어 있도록 한다.
- src 폴더의 java 파일에 다음과 같이 코드를 추가한다.


1) 클래스에 View.OnClickListener 를 구현한다.
implements View.OnClickListener


2) 클래스 내에 오른쪽 버튼을 클릭하여 나타난 바로가기 메뉴에서 [Source]- [Override] 메뉴를 클릭한다.

 

 



3) 나타난 대화상자에서 “onClick" 메서드를 선택한 후 [OK] 버튼을 클릭한다. 그러면 클래스에 onClick 메서드가 삽입된다.

 

 

 


4) onCreate 메서드에 다음과 같이 코드를 작성한다. 즉 버튼을 리스너에 등록한다.
Button b1=(Button)findViewById(R.id.버튼의 ID);
b1.setOnClickListener(this);

5) onClick 메서드에는 다음과 같은 코드를 작성한다. 즉 버튼을 클릭하면 텍스트뷰의 텍스트가 변경되도록 한다.
TextView t1=(TextView)findViewById(R.id.텍스트뷰의 ID);
t1.setText("시작입니다");
※ 코드에서 리소스를 참조하려면 다음과 같이 R.java 파일에 정의된 R 클래스와 하위 클래스의 멤버변수를 통하여 접근한다.
R.리소스_형식.리소스_이름


[실습 2] 2 개의 버튼과 한 개의 텍스트뷰 추가. 각각의 버튼을 클릭하면 해당 텍스트 내용이 텍스트뷰에 나타나도록 한다.


- 이벤트 발생시키는 뷰의 id 를 파악하여 id 에 따라 텍스트 값 출력
- OnClickListener 의 onClick 메서드는 누구를 클릭했는지 View 타입의 인수 v 를 전달받는다. v 의 getId 메서드를 이용하여 클릭된 버튼을 알아내고 각 버튼별로 일을 처리하도록 한다.


[실습 3] 화면에 마우스를 클릭하거나, 움직임에 대한 텍스트 내용이 텍스트뷰에 표시되도록 한다.


- 모바일 환경에서 가장 흔하게 발생하는 이벤트는 손가락이나 스타일러스로 화면을 누르는 터치동작이다. 이 이벤트는 콜백 메서드나 리스너의 핸들러로 받는다


boolean onTouchEvent(MotionEvent event)
boolean onTouch(View v, MotionEvent event)


- MotionEvent.getAction 메서드는 사용자가 화면에 어떤 일을 했는지 정보를 전달한다.

ACTION_DOWN
화면을 눌렀다
ACTION_MOVE
누른 채로 움직였다
ACTION_UP
화면에서 손가락을 뗐다.

- 해결 방안
1) View.OnTouchListener 이용
2) 레이아웃의 id를 파악하여 레이아웃에 이벤트 리스너 등록
3) 동작에 따라 텍스트뷰에 상태 알림 텍스트 표시


[실습 4] 체크 버튼 추가. 체크 버튼 클릭에 따라 선택 여부의 텍스트 내용이 체크 박스 텍스트에 표시되도록 한다.

 

 


- OnCheckedChangeListener 이용
- 체크 버튼의 isChecked() 메서드 이용하여 체크 상태를 파악

 

'안드로이드' 카테고리의 다른 글

탭호스트 사용법  (0) 2015.05.15
이벤트처리:어떤 리스너들이 있는가?  (0) 2015.03.13
이벤트처리  (0) 2015.03.12
레이아웃:코드로 레이아웃 생성  (0) 2015.03.12
안드로이드 API 주소  (0) 2015.03.12
블로그 이미지

왕왕왕왕

,