상세 컨텐츠

본문 제목

[Android]이벤트 - 01

Android 개발

by mobile 2012. 8. 15. 14:26

본문

반응형

▶ 대표적인 이벤트 유형

 속성

설명 

터치 이벤트 

화면을 손가락으로 누를 때 발생하는 이벤트 

키 이벤트 

키패드나 하드웨어 버튼을 누를때 발생하는 이벤트 

제스처 이벤트 

터치 이벤트 중에서 일정 패턴을 만들어 내는 이벤트 

포커스 

뷰마다 순서대로 주어지는 포커스 

화면 방향 변경 

화면의 방향이 가로/세로로 바뀜에 따라 발생하는 이벤트 


▶ 제스처 이벤트를 통해 처리할 수 있는 이벤트 유형

 메소드

이벤트 유형 

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 개발' 카테고리의 다른 글

[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

관련글 더보기

댓글 영역