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

MotionEvent 질문입니다.

0 추천
아래의 코드를 보시면 플레이어 영역에서 터치를 한번하면 플레이어 메뉴들이 나왔다가 헨들러 메시지로 4초 뒤에 없어집니다.

그런데 플레이어 메뉴들이 나오고 제가 터치를 하여 플레이어 seekbar나 볼륨바를 움직여도 4초뒤에는 그냥 꺼져 버리게 되는데요 혹시 플레이어 영역에서 ACTION_MOVE를 사용할 수 없는 것인가요...

현재 이 영역에 터치 또는 모션 이벤트가 있다면 플레이어 메뉴들을 visible 시키고 없다면 4초뒤에 invisible 시키고 싶은데 잘 안되네요.. 혹시 방법을 아시는 고수님이 계시다면 어떻게 해야하는건지 알려주시면 감사하겠습니다.

 

@Override
  public boolean onTouch(View v, MotionEvent event) {
   Log.i("aaaaaa","onTouch() event:" + event.getAction());
   switch(event.getAction()) {
    case MotionEvent.ACTION_DOWN:
     if(mDownloadPopup != null)
      mDownloadPopup.hide();
     if(mPlayer.isPrepared()) {
      
   if(event.getAction() != MotionEvent.ACTION_MOVE)
          {
           Log.i("aaa","aaa");
         mVCHandler.removeMessages(HANDLER_TYPE_VIEWAUTOGONE);
         mVCHandler.sendEmptyMessageDelayed(HANDLER_TYPE_VIEWAUTOGONE, 4 * 1000);
          }else{
           Log.i("aaa1111","bbbbbbbb");
           mVCHandler.sendEmptyMessage(HANDLER_TYPE_VIEWSHOW);
           }
  
     }
     break;
   }
   return false;
  }
개발자가되자 (340 포인트) 님이 2013년 4월 8일 질문

2개의 답변

0 추천

mVCHandler.sendEmptyMessageDelayed(HANDLER_TYPE_VIEWAUTOGONE, 4 * 1000);

이부분들 빼고 핸들러에서 sleep주는건 어떠실지..

유키군 (260 포인트) 님이 2013년 4월 8일 답변
0 추천
DOWN 액션에서 thread 생성 해주고 카운트하는 변수하나두고

1초씩 슬립하면서 카운트가 4가되면 핸들러에 메세지보내서 뷰를 GONE하게 해주고

터치이벤트 들어올때마다 thread 상태체크해서 돌고있으면

카운트변수를 0으로 해주면 될것같네요.
얼룩돼지 (15,720 포인트) 님이 2013년 4월 8일 답변
아 DOWN액션에서 thread생성해줄때도 thread 생성된상태인지 체크해야됩니다.   핸들러에서 thread.interrupt(); thread = null; 해줘서  해제해주구요
...