▶ 대표적인 이벤트 유형
속성 |
설명 |
터치 이벤트 |
화면을 손가락으로 누를 때 발생하는 이벤트 |
키 이벤트 |
키패드나 하드웨어 버튼을 누를때 발생하는 이벤트 |
제스처 이벤트 |
터치 이벤트 중에서 일정 패턴을 만들어 내는 이벤트 |
포커스 |
뷰마다 순서대로 주어지는 포커스 |
화면 방향 변경 |
화면의 방향이 가로/세로로 바뀜에 따라 발생하는 이벤트 |
▶ 제스처 이벤트를 통해 처리할 수 있는 이벤트 유형
메소드 |
이벤트 유형 |
onDown() |
화면이 눌렸을 경우 |
onShowPress() |
화면이 눌렸다 떼어지는 경우 |
onSingleTapUp() |
화면이 한 손가락으로 눌렸다 떼어지는 경우 |
onSingleTapConfirmed() |
화면이 한 손가락으로 눌려지는 경우 |
onDoubleTap() |
화면이 두 손가락으로 눌려지는 경우 |
onDoubleTapEvent() |
화면이 두 손가락으로 눌려진 상태에서 떼거나 이동하는 등 세부적인 액션을 취하는 경우 |
onScroll() |
화면이 눌린 채 일정한 속도와 방향으로 움직였다 떼는 경우 |
onFling() |
화면이 눌린 채 가속도를 붙여 손가락을 움직였다 떼는 경우 |
onLongPress() |
화면을 손가락으로 오래 누루는 경우 |
▷ SampleEventsActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.GestureDetector;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.TextView;
public class SampleEventsActivity extends Activity {
TextView TextView01;
private GestureDetector mGestures = null;
@Override
public boolean onTouchEvent(MotionEvent event) {
// TODO Auto-generated method stub
// return super.onTouchEvent(event);
if (mGestures != null) {
return mGestures.onTouchEvent(event);
} else {
return super.onTouchEvent(event);
}
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
return super.onKeyDown(keyCode, event);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView01 = (TextView) findViewById(R.id.TextView01);
View rootLayout = findViewById(R.id.rootLayout);
ViewTreeObserver observer = rootLayout.getViewTreeObserver();
observer.addOnTouchModeChangeListener(new ViewTreeObserver.OnTouchModeChangeListener() {
public void onTouchModeChanged(boolean isTouchMode) {
TextView01.append("\nonTouchModeChanged : " + isTouchMode);
}
});
TextView01.setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
TextView01.append("\nonLongClick: " + v.toString());
return true;
}
});
mGestures = new GestureDetector(
new GestureDetector.SimpleOnGestureListener() {
public boolean onFling(MotionEvent e1, MotionEvent e2,
float velocityX, float velocityY) {
TextView01.append("\nonFling \n\tx = " + velocityX + "\n\ty="
+ velocityY);
return super.onFling(e1, e2, velocityX, velocityY);
}
public boolean onScroll(MotionEvent e1, MotionEvent e2,
float distanceX, float distanceY) {
TextView01.append("\nonScroll \n\tx = " + distanceX + "\n\ty = "
+ distanceY);
return super.onScroll(e1, e2, distanceX, distanceY);
}
});
TextView01.setOnFocusChangeListener(new View.OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if (hasFocus) {
TextView01.append("\nonFocusChange, hasFocus : " + hasFocus);
} else {
TextView01.append("\nonFocusChange, hasFocus : " + hasFocus);
}
}
});
}
}
▷ 결과
[Android] 포커스 (0) | 2012.08.16 |
---|---|
[Android]event - 02 (0) | 2012.08.15 |
[Android]Toast - 02 (0) | 2012.08.15 |
[Android]Toast - 01 (0) | 2012.08.15 |
[Android] 리소스와 메니페스트 (0) | 2012.08.14 |
댓글 영역