마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

OnTouchListener 관련 질문이 있습니다 !

0 추천

너무 쉬운 질문인건지 검색을 해도 쉽사리 나오지 않군요 ㅠㅠ

 

며칠 전부터 앱 만들기에 도전중인 학생입니다 !

 

궁금한 점은 switch ()  << 요 안에 있는 것 입니다. 

 

Android Reference 를 잘 못보는 건지, 봐도 이해가 안되더라구요 ㅠㅠ

 

우선 소스코드를 붙이겠습니다 !

 

 

 final int IDLE = 0;
 final int TOUCH = 1;
 final int PINCH = 2;
 OnTouchListener MyOnTouchListener
    = new OnTouchListener(){
 
  @Override
  public boolean onTouch(View view, MotionEvent event) {
   
   float distx, disty;
   
   switch(event.getAction() & MotionEvent.ACTION_MASK){
   case MotionEvent.ACTION_DOWN:
    //A pressed gesture has started, the motion contains the initial starting location.
    myTouchEvent.setText("ACTION_DOWN"); 
    touchState = TOUCH;
    break;
   case MotionEvent.ACTION_POINTER_DOWN:
    //A non-primary pointer has gone down.
    myTouchEvent.setText("ACTION_POINTER_DOWN"); 
    touchState = PINCH;
    
    //Get the distance when the second pointer touch
    distx = event.getX(0) - event.getX(1);
    disty = event.getY(0) - event.getY(1);
    dist0 = FloatMath.sqrt(distx * distx + disty * disty);
 
    break;
   case MotionEvent.ACTION_MOVE:
    //A change has happened during a press gesture (between ACTION_DOWN and ACTION_UP).
    myTouchEvent.setText("ACTION_MOVE");
    
    if(touchState == PINCH){      
     //Get the current distance
     distx = event.getX(0) - event.getX(1);
     disty = event.getY(0) - event.getY(1);
     distCurrent = FloatMath.sqrt(distx * distx + disty * disty);
 
     drawMatrix();
    }
    
    break;
   case MotionEvent.ACTION_UP:
    //A pressed gesture has finished.
    myTouchEvent.setText("ACTION_UP"); 
    touchState = IDLE;
    break;
   case MotionEvent.ACTION_POINTER_UP:
    //A non-primary pointer has gone up.
    myTouchEvent.setText("ACTION_POINTER_UP"); 
    touchState = TOUCH;
    break;
   }
   
   return true;
  }
     
    };
 
 
붙여보니 보기 힘들게 됬군요...흠
 
다름이 아니라, switch 괄호 안에 정수가 반환되는건지, 또 그 정수는 무엇을 뜻하는지 궁금합니다.
 
알려주세요 ~! ㅎㅎ
Digit_Archit (160 포인트) 님이 2013년 12월 30일 질문
http://wiki.kldp.org/wiki.php/DocbookSgml/Beginner_QA-KLDP 이걸 읽어보시고, http://www.masterqna.com/android/1 이것도 읽어보시고 소스를 보기 좋게 올려주세요. 이런 식으로 올리면 답변 달아줄 사람들이 귀찮아서 그냥 넘어 갑니다.

1개의 답변

0 추천

event.getAction() & MotionEvent.ACTION_MASK 는 바뀔 값이 되겠지요.

뭐 질문대로라면 정수가 반환되겠지요. MotionEvent.ACTION_MOVE:와 같은것도 정수가 되겠고요. 그리고 무엇을 하는 것인지에 대한 답은 http://developer.android.com/reference/android/view/MotionEvent.html에 가보시면 됩니다.

정 이 값이 궁금하다고 하시면 직접 찍어보면 됩니다. 근데.. 기억하고 있다가 나중에 이 값이 몇이였는데 하면서 코드상에 MotionEvent.ACTION_MOVE:가 아닌 0이라던지 이런 값을 쓰지는 마시고요. 왜 이렇게 하지 말라고 하는지는 만약 구글에서 해당값을 다른 것으로 바꾼다면 소스코드를 일일이 다 바꿔야 하지만 MotionEvent.ACTION_MOVE:와 같이 적어준다면 소스코드를 바꿔줄 일이 없기 때문입니다.

그리고... switch뒤에 event.getAction()까지만 하면 될꺼같은데 뒤에껀 뭐에 쓰는건지... 저도 잘 모르겠네요;

인연 (31,880 포인트) 님이 2014년 1월 6일 답변
...