2013-01-21 2 views
0

... 내 앱에서 MotionEvent.ACTION_DOWN의 레이아웃을 업데이트 한 다음 모션 이벤트 좌표를 확인하여 버튼을 찾습니다. 나는 손가락이 다른 단추에 풀어 놓일 때 축배를 보여줄 수있다. 문제는 내 버튼에서 MotionEvent.ACTION_UP과 충돌하지 않고 다른 액션을 호출해야한다는 것입니다. 긴 클릭 핸들러를 구현했지만 작동하지 않는 '클릭'하지 않습니다. 너희들이 내 문제를 이해하기 바래.Android : 버튼을 길게 터치하는 동안 MotionEvent.ACTION_MOVE

내 앱을 의도 한대로 작동시키는 가장 좋은 방법은 무엇입니까?

내 클래스는 OnTouchListener, OnGestureListener

@Override 
public boolean onTouch(View v, MotionEvent event) { 

    switch(event.getAction()){ 

    case MotionEvent.ACTION_DOWN: 

     // UPDATE LAYOUT 
      break; 

     case MotionEvent.ACTION_UP: 

     // GET BUTTON X Y   
      if (x and y match the button location){ 

       // DO ACTION 

      }else{ 

       // DO NOTHING 

      }   
      // CHANGE LAYOUT TO INITIAL STATE 
      break; 

     case MotionEvent.ACTION_MOVE: 
      break; 

    } 

     return false; 


    mybutton.setOnLongClickListener(new OnLongClickListener() { 

     @Override 
     public boolean onLongClick(View v) { 
       // DO STUFF 
      return true; 
     } 
    }); 

} 

답변

0

그냥 onTouch(...) 방법에 false을 반환하고 난 ... 코드를 업데이트 시도 무엇 평소

+0

생각해 그게 전부로 onLongClickListener(...)를 사용하려고 구현합니다. motionEvent_UP 후에 내 레이아웃이 다시 정상 상태로 전환되므로 손가락을 들어 올리지 않고 다시 터치하지 않고도 이동 이벤트에서 곧바로 길게 터치해야합니다. – user1915113

+0

음, 그러면 onTouchEvent()에 타이머를 추가하고 ACTION_DOWN으로 시작해야합니다.이 방법으로 자신의 onLongClickListener (...)를 구현할 수 있지만 손가락 위치를 주기적으로 확인하는 것을 잊지 마십시오. – user1049280

+0

예 버튼 위치에 도달하면 상수 xy 업데이트를 없애는 방법이 있습니까? 그것은 매우 민감하기 때문에 한번 이상 이벤트를 발생시킵니다. 그리고 어떻게하면 긴 터치 타이머를 감지 할 때 위의 이벤트가 시작되는 것을 피할 수 있습니다 ... 둘 다 motionEvent_UP에서 발생하는 것 같습니다. – user1915113