2013-08-17 2 views
0

애니메이션을 재생할 때 ontouch 리스너를 잠 그려고합니다. 이것은 내 코드입니다.온 터치 리스너 잠금

public class MainActivity extends Activity implements OnTouchListener { 


boolean gifIsPlaying; 
long PLAYING_TIME_OF_GIF = 111; 


@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 


    GIFWebView view = new GIFWebView 
      (this, "file:///android_asset/imageedit_ball.gif"); 


    gifIsPlaying = true; 

    new Handler().postDelayed(new Runnable() { 
     public void run() { 
      gifIsPlaying = false; 
     } 
    }, PLAYING_TIME_OF_GIF); 


    setContentView(view); 
    view.setOnTouchListener(this); 
    }  

public boolean onTouch(View v, MotionEvent event) { 
    // TODO Auto-generated method stub 

    if (gifIsPlaying) { 
     // No response to touch events 
    } else { 
     // Respond to touch events 
     GIFWebView view1 = new GIFWebView 
       (this, "file:///android_asset/imageedit_ball.gif"); 

     gifIsPlaying = true; 

     new Handler().postDelayed(new Runnable() { 
      public void run() { 
       gifIsPlaying = false; 
      } 
     }, PLAYING_TIME_OF_GIF); 

     setContentView(view1); 
    } 

    // Consume touch event 
    return true; 
} 

} 

나는 ontouch 내에서 ontouch를 구현하려했지만 사용하지 않았습니다. gif 애니메이션이 루프를 완료 할 때까지 온 오프를 반복합니다. 도와주세요.

+0

코드를 실행하기 위해 onTouch 내부에 부울 변수를 사용하십시오. TimerTask를 사용하여 일정 시간 기다렸다가 부울 변수를 전환 할 수 있습니다. – bakriOnFire

+0

public boolean isAnimationOn = false; public boolean onTouch (View v, MotionEvent 이벤트) { if (isAnimationOn) false를 반환합니다. else return true; 은} 나는 u를 사용했다 적절한 코드 구현 .. – Meghs

+0

를 작동하지 않는 시도 \t \t \t if (event.getAction() == MotionEvent).ACTION_DOWN) {(로드 된 경우 \t \t \t \t \t \t) {\t \t \t \t \t \t 반환 거짓 \t \t; \t \t \t \t \t \t \t} 다른 \t \t \t { \t \t \t \t \t \t \t \t GIFWebView의 뷰 1 = 새로운 GIFWebView \t \t \t \t \t (이, "파일 : /// android_asset/imageedit_ball. gif "); \t \t \t \t setContentView (view1); \t \t \t \t view1.setOnTouchListener (this); \t \t \t} \t \t \t \t \t} 사실 \t \t \t \t 반환; \t} – bakriOnFire

답변

1

당신은 당신이 알고 경우 다음 GIF의 실행 시간을 시도 할 수 있습니다 :

글로벌 부울 변수 선언 : 작성 및 활동의보기로 GIFWebView를 추가 한 후

boolean gifIsPlaying; 
long PLAYING_TIME_OF_GIF = ???; 

truegifIsPlaying 설정 . 지연 포스트의 Runnable은 PLAYING_TIME_OF_GIFfalsegifIsPlaying을 설정합니다 :

gifIsPlaying = true; 

new Handler().postDelayed(new Runnable() { 
    public void run() { 
     gifIsPlaying = false; 
    } 
}, PLAYING_TIME_OF_GIF); 

PLAYING_TIME_OF_GIFlong 변수가 될 것입니다. 이 방법은 당신을 위해 작동

public boolean onTouch(View v, MotionEvent event) { 
    if (gifIsPlaying) { 
     // No response to touch events 
    } else { 
     // Respond to touch events 
     GIFWebView view1 = new GIFWebView 
       (this, "file:///android_asset/imageedit_ball.gif"); 

     gifIsPlaying = true; 

     new Handler().postDelayed(new Runnable() { 
      public void run() { 
       gifIsPlaying = false; 
      } 
     }, PLAYING_TIME_OF_GIF); 

     setContentView(view1); 
    } 

    // Consume touch event 
    return true; 
} 

경우, 한 번 Handler를 만들고 그것을 다시 사용할 것을 고려 : 당신의 onTouch (보기, MotionEvent) 내부

. Runnable도 마찬가지입니다.

나는이 문제를 해결할 다른 방법이 없다고 생각합니다. 확실히 GIF가 그 과정을 수행했다는 것을 알려주는 콜백 메소드가 없습니다.

+0

실제로 작동하지 않습니다. 실제로 처음에는 터치 이벤트가 발생하지만 나중에 터치 이벤트가 작동하지 않습니다. – Meghs

+0

@ Mems 위 질문에 전체 활동을 게시 할 수 있습니까? – Vikram

+0

확인해주세요. 편집했습니다. – Meghs