MotionEvent라는 클래스가 있다.
이 클래스에는 터치 관련된 상수들이 정의되어 있다.
이 중에서 여러 상수들이 정의돼 있지만 일단 내가 정확히 알고 있고 왠지 많이 쓰일 거 같은 거 3가지를 추려보자면...
ACTION_DOWN : 처음 눌렸을 때
ACTION_MOVE : 누르고 움직였을 때
ACTION_UP : 누른걸 땠을 때
MotionEvent를 사용할 수 있는 곳은
1. onTouchEvent
onTouchEvent는 화면을 터치하면 호출되는 콜백 메소드이다.
onTouchEvent는 인자로 MotionEvent를 가지고 있으니 매개변수에 getAction()메소드를 사용하여 MotionEvent 상수들과 비교하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | public boolean onTouchEvent(MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: textView.setText("ACTION_DOWN"); return true; case MotionEvent.ACTION_MOVE: textView.setText("ACTION_MOVE"); return true; case MotionEvent.ACTION_UP: textView.setText("ACTION_UP"); return false; } return false; } | cs |
ACTION_DOWN과 ACTION_MOVE는 return true를 하고
ACTION_UP은 return false를 해야지 안전하다고 하는데
return대신 break를 넣어도 나는 차이를 느낄 수 없었다.
2. 버튼의 리스너
버튼의 리스너로 등록가능하다.
onTouch에도 MotionEvent가 인자로 들어가니 1번 처럼 쓰면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | button = (Button)findViewById(R.id.button); button.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: textView.setText("ACTION_DOWN"); return true; case MotionEvent.ACTION_MOVE: textView.setText("ACTION_MOVE"); return true; case MotionEvent.ACTION_UP: textView.setText("ACTION_UP"); return false; } return false; } }); | cs |
다른 사용방법이 있거나 내가 틀린 부분이 있겠지만 아무튼 다른 내용은 구글 디벨로퍼를 참고하자
https://developer.android.com/reference/android/view/MotionEvent.html
'프로그래밍 > 안드로이드 스튜디오' 카테고리의 다른 글
안드로이드 위젯 자바코드에서 컨트롤 하기 (0) | 2017.11.29 |
---|---|
안드로이드 위젯(뷰) 정리 (0) | 2017.11.26 |
안드로이드 스튜디오 액티비티 생성 오류? (0) | 2017.11.20 |