이벤트 - 키, 터치
"키"와 "터치"로 이벤트를 다루는 방법에 대해서 소개합니다.
1. 구현
|
Key Event 구현 - 영상
|
|
Touch Event 구현 영상
|
터치 이벤트의 경우에는 최근에 스마트폰 게임을 많이 한다고 하는데, 이때 꼭 빠질 수 없는 것이 터치이다.
모션 이벤트를 다루는 방법에 대해서 소개하고 있다.
2. 소스코드
public class MainActivity extends AppCompatActivity {
int x = 100, y = 100;
protected class UsrView extends View{
public UsrView(Context context){ super(context); setBackgroundColor(Color.GREEN); }
protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.BLUE); canvas.drawRect(x, y, x + 50, y + 50, paint); } }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main)
UsrView view = new UsrView(this); view.setOnKeyListener(new View.OnKeyListener() { @Override public boolean onKey(View view, int keyCode, KeyEvent keyEvent) {
if ( keyEvent.getAction() == keyEvent.ACTION_UP ) { switch ( keyCode ){
case KeyEvent.KEYCODE_J: x -= 30; break;
case KeyEvent.KEYCODE_K: x += 30; break;
case KeyEvent.KEYCODE_I: y -= 30; break;
case KeyEvent.KEYCODE_M: y += 30; break;
} // end of switch view.invalidate(); return true; }
return false; } });
}
}
|
키 이벤트 - 소스
|
public class MainActivity extends AppCompatActivity {
int x = 100, y = 100; String str;
protected class UsrView extends View{
public UsrView(Context context){ super(context); setBackgroundColor(Color.GREEN); }
protected void onDraw(Canvas canvas) { Paint paint = new Paint(); paint.setColor(Color.BLUE); canvas.drawRect(x, y, x + 50, y + 50, paint); canvas.drawText("액션의 종류:" + str, 0, 20, paint); }
public boolean onTouchEvent(MotionEvent event){
x = (int)event.getX(); y = (int)event.getY();
if ( event.getAction() == MotionEvent.ACTION_DOWN ) str = "ACTION_DOWN"; if ( event.getAction() == MotionEvent.ACTION_MOVE ) str = "ACTION_MOVE"; if ( event.getAction() == MotionEvent.ACTION_UP ) str = "ACTION_UP";
invalidate(); return true; }
}
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //setContentView(R.layout.activity_main)
UsrView view = new UsrView(this); setContentView(view);
}
}
|
터치 이벤트 - 소스
|
키 이벤트
-> 메소드: boolean onKey( View v, int keyCode, KeyEvent event) { }
-> 리스너 객체 등록: onKeyListener( );
터치 이벤트
-> 콜백 메소드 재정의: Boolean onTouchEvent(MotionEvent e)
-> 리스너 객체 등록: 인터페이스 onTouchEventListener( View v, MotionEvent e )를 정의
구현 방법도 살펴볼 수 있을 것으로 보인다.
액션
| 설명
|
ACTION_DOWN
| 누르는 동작이 시작됨.
|
ACTION_UP
| 누르고 있다가 땔 때 발생함.
|
ACTION_MOVE
| 누르는 도중에 움직임.
|
ACTION_CANCEL
| 터치 동작이 취소됨.
|
ACTION_OUTSIDE
| 터치가 현재의 위젯을 벗어남.
|