2013-01-09 2 views
0

이미지 버튼을 눌러 손가락을 아래로 유지하면 보이지 않게되고, 손가락을 떼면 다시 표시됩니다.버튼 외부에서 MotionEvent가 작동하지 않습니다.

하지만 난 버튼을 누르면 손가락이 아래로있는 동안 나는 그것에서 멀리 이동하고 볼을 다시

코드는이

final ImageButton b=(ImageButton)findViewById(R.id.timer_btn); 

     b.setOnTouchListener(new View.OnTouchListener() { 

     public boolean onTouch(View v, MotionEvent event) { 
       switch (event.getAction()) { 

        case MotionEvent.ACTION_UP: 
         b.setVisibility(View.VISIBLE); 
         Log.w("app", "Action up"); 
         return true; 
        case MotionEvent.ACTION_DOWN: 
         b.setVisibility(View.INVISIBLE); 
         Log.w("app", "Action down"); 

         } 
        return false; 
      } 
     }); 

I 모양이되지 않는 위로 들어 올리 때 이 버튼을 외부 또는 내부에 있다면

case MotionEvent.ACTION_OUTSIDE: 
          b.setVisibility(View.VISIBLE); 
          Log.w("app", "Action outside"); 

          } 

를 사용하여 시도했지만 작동하지 않습니다, 그것은 상관없이 호출되는

답변

1

ACTION_CANCEL을 사용해야합니다. ACTION_OUSIDE가 실제 화면 외부에있는 것 같습니다.

시스템은 항상 UP 또는 CANCEL 중 하나를 호출합니다.

편집 :이 일을한다고 생각

:

   case MotionEvent.ACTION_CANCEL: 
       case MotionEvent.ACTION_UP: 
        b.setVisibility(View.VISIBLE); 
        Log.w("app", "Action up"); 
        return true; 
+0

오, 나는이 말에 ACTION_CANCEL을 사용했는데 그것은 작동하지 않았다 나는 ACTION_UP 전에 이동 한 때 일한 경우, 첫 번째 사례로 넣으려는 답변을 업데이트하고 싶을 수 있으므로 같은 문제가있는 사람이 더 쉽게 할 수 있습니다. – DoubleP90

+0

내 대답에 일부 코드를 삽입했습니다. 작동하지 않습니까? – Budius

+0

예 첫 번째 경우 ACTION_CANCEL, 그 다음 ACTION_UP, 그 다음 ACTION_DOWN, 끝에 ACTION_CANCEL을 사용하면 작동하지 않습니다. – DoubleP90

관련 문제