안드로이드에서 발생할 수 있는 이벤트는 크게 두 가지로 분류할 수 있다. 첫째는 키 이벤트이고, 둘째는 터치 이벤트이다. 물론 넥서스원 처럼 트랙볼이 있는 경우에는 트랙볼 이벤트가 발생한다.
일반적으로 뷰에서 발생할 수 있는 이벤트는 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] DDMS(Dalvik Debug Monitor Service) 사용법 (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 |