http://bitsoul.tistory.com/13
안드로이드 이벤트 : 버튼 클릭,롱클릭, 터치...
Touch 이벤트와 Click 이벤트 그리고 LongClick 이벤트는 어떠한 관계에 있을까? 그리고 어떤 순서대로 발생할까?
만약 사용자가 특정 버튼을 클릭하면
Touch(down) -> Touch(up) -> OnClick 순으로 발생한다
만약 사용자가 특정 버튼을 롱클릭하면
Touch(down) -> OnLongClick -> Touch(up) -> OnClick 순으로 발생한다
이를 확인해볼수 있는 예제 코드가 다음과 같다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | public class MainActivity extends ActionBarActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tv = (TextView)findViewById(R.id.textView2); Button b = (Button)findViewById(R.id.button1); // 버튼의 이벤트 처리 - 클릭, 롱클릭, 터치 b.setOnClickListener(new OnClickListener() { public void onClick(View v) { pp("클릭 됨"); // 리턴값이 없다 } }); b.setOnLongClickListener(new OnLongClickListener() { public boolean onLongClick(View v) { pp("롱클릭 됨"); return false; } }); b.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN : pp("터치 - 다운");break; case MotionEvent.ACTION_MOVE : pp("터치 - 무브");break; case MotionEvent.ACTION_UP : pp("터치 - 업 ");break; } return false; } }); } // end of onCreate void pp(String str) { tv.setText(str+"\n"+tv.getText().toString()); Log.d("test", str); } } // end of class | cs |
위 예제에선 테스트를 위해 onTouch() 와 onLongClick() 에서 true 를 리턴하지 않고 false 를 리턴 했다. (그래야 다음에 발생되는 이벤트가 뭔지 알수 있다.)
실행화면>
일반 클릭(터치) 인경우
롱클릭인 경우
'mobile > android src' 카테고리의 다른 글
Android - Event Access (0) | 2019.07.17 |
---|---|
Android - Event Handler 우선순위 (0) | 2019.07.17 |
Android - Event callback (0) | 2019.07.17 |
Android - Toast (0) | 2019.07.17 |
Android - xml resource to view inflate (0) | 2019.07.16 |
댓글