본문 바로가기

안드로이드 이벤트 : 버튼 클릭,롱클릭, 터치...

mobile/android src by 낼스 2016. 1. 21.

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

댓글