상세 컨텐츠

본문 제목

[Android]Key / Touch event

Android 개발

by mobile 2012. 1. 28. 11:26

본문

반응형
안드로이드는 event driven 방식으로 동작한다. 이벤트 드리븐 방식이라는 것은 사용자가 버튼을 틀릭하거나 키를 누르는 등의 이벤트에 의해 프로그램이 동작하다는 것을 의미한다. 

안드로이드에서 발생할 수 있는 이벤트는 크게 두 가지로 분류할 수 있다. 첫째는 키 이벤트이고, 둘째는 터치 이벤트이다. 물론 넥서스원 처럼 트랙볼이 있는 경우에는 트랙볼 이벤트가 발생한다.

일반적으로 뷰에서 발생할 수 있는 이벤트는 android.view.View 클래스에 인터페이스로 선언되어 있다. 이 인터페이스에는 안드로이드 시스템에 의해 호출되는 callback method가 정의 되어 있다. 그러므로 우리는 이벤트 리스너의 메소드를 구현하기만 하면 원하는 이벤트가 발생했을 때 적절한 처리를 할 수 있다.

- android.view.View 클래스의 이벤트 리스너
 인터페이스
 설명
 View.OnClickListener  뷰가 클릭되었을 때 호출되는 콜백 메소드를 정의하는 인터페이스
 View.OnCreateContextMenuListener  뷰에 컨텍스트 메뉴가 생성되어야 할 때 호출되는 콜백 메소드를 정의하는 인터페이스
 View.OnFocusChangeListener  뷰의 포커스 상태가 변경되었을 때 호출되는 콜백 메소드를 정의하는 인터페이스
 View.OnKeyListener  키 이벤트를 뷰에 전달해야 할 때 호출 되는 콜백 메소드를 정의하는 인터페이스
 View.OnLongClickListener  뷰에 롱클릭이 발생했을때 호출되는 콜백 메소드를 정의하는 인터페이스
 View.OnTouchListener  터치 이벤트를 뷰에 전달해야 할 때 호출되는 콜백 메소드를 정의하는 인터페이스

- 버튼에 클릭 이벤트를 붙이는 방법
버튼에 클릭했을 때 어떤 동작을 하게 만드는 방법은 세가지가 있다. 이중에서 두가지 방법은 자바 문법에 기인한 방법이며, 다른 한가지 방법은 안드로이드에서 편의상 제공하는 방법이다.
① 익명 클래스를 사용해서 버튼에 리스너 객체를 설정하는 방법
② 버튼 리스너를 액티비티에서 구현하고 이 액티비티를 버튼에 설정하는 방법
③ 레이아웃 XML 파일의 Button 속성에 onClick 요소를 추가하는 방법

① 익명 클래스를 사용해서 버튼에 리스너 객체를 설정하는 방법  
: 버튼을 틀릭했을 때 발생하는 이벤트 메소드는 onClick()이다. 또한 이 메소드는 View.OnClickListener 인터페이스에 선언 되어 있으므로 이 인터페이스를 구현해서 버튼에 붙여야 한다. 이때 이 인터페이스를 구현하는 코드를 다음과 같이 익명 클래스로 작성 할 수 있다.


import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;


public class ButtonClickDemoA1Activity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

        

        final EditText edit = (EditText)findViewById(R.id.edit);

        final TextView text = (TextView)findViewById(R.id.text);

        

        Button button = (Button)findViewById(R.id.button);

        button.setOnClickListener(new View.OnClickListener() {

public void onClick(View v) {

// TODO Auto-generated method stub

text.setText(edit.getText());

}

});

    }

}


② 버튼 리스너를 액티비티에서 구현하고 이 액티비티를 버튼에 설정하는 방법
: 이 방법은 익명 클래스 대신에 액티비티에서 버튼 리스너를 구현하고 이 액티비티를 버튼에 설정하는 방법이다. 그렇기 때문에 클래스 선언 부에 implements View.OnClickListener를 선언해야 하며, 버튼의 setOnClickListener 메소드에서는 현재 객체(즉, 현재 액티비티)를 가르키는 this를 선언해야 한다.

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.TextView;


public class ButtonClickDemoA1Activity extends Activity implements View.OnClickListener{

EditText edit;

TextView text;

public void OnCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

edit = (EditText)findViewById(R.id.edit);

text = (TextView)findViewById(R.id.text);

Button button = (Button)findViewById(R.id.button);

button.setOnClickListener(this);

}

public void onClick(View v){

text.setText(edit.getText());

}

}


③ 레이아웃 XML 파일의 Button 속성에 onClick 요소를 추가하는 방법
: 버튼 리스너를 구현하는 방식이 아닌 Button에서 제공하는 onClick 속성을 사용하는 방법이다. 레이아웃 XML 파일의 <Button>을 아래와 같이 수정하면 된다.


<Button 

android:id="@+id/button"

android:text="입력"

android:onClick="clickButton"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>


 


반응형

'Android 개발' 카테고리의 다른 글

[Android]이클립스 단축키  (0) 2012.06.10
[Android]에뮬레이터와 시뮬레이터의 차이  (0) 2012.06.10
[Android] Activity  (0) 2011.11.13
[Android]Spinner(스피너)  (0) 2011.11.13
[Android] Edit Text  (0) 2011.08.09

관련글 더보기

댓글 영역