2014-01-19 2 views
0

나는 캔버스에서 놀고있는 gif를 가지고있다. 내 gif는 계속 반복됩니다. 누구든지 반복에서 그것을 발견하는 방법을 알고 있습니까? 여기 내 코드는 다음과 같습니다.gif를 안드로이드에서 루핑하는 것을 멈추는 방법

if (movieStart == 0) { 
     movieStart = (int) now; 
    } 
    if (mMovie != null) { 
     int relTime = (int) ((now - movieStart) % mMovie.duration()); 
     mMovie.setTime(relTime); 
     mMovie.draw(canvas, getWidth()/2 - mMovie.width(), getHeight()/2 
      - mMovie.height()); 
    this.invalidate(); 
    } 

제가 setTime으로 놀면 나는 잘 돌아갈 수 있습니다. 하지만 setTime에 대한 문서를 찾을 수 없습니까? 그것은 정확히 무엇을합니까?

ADDITIONAL TRIAL 1

if (movieStart == 0) { 
     movieStart = (int) now; 
    } 
    while (mMovieLoop-- > 0) { 
     if (mMovie != null) { 
      int relTime = (int) ((now - movieStart) % mMovie.duration()); 
      mMovie.setTime(relTime); 
      mMovie.draw(canvas, getWidth()/2 - mMovie.width(), getHeight()/2 
       - mMovie.height()); 

      this.invalidate(); 
     } 
    } 

ADDITIONAL TRIAL 또한 내 GIF 4 프레임 이루어지는 2

if (movieStart == 0) { 
     movieStart = (int) now; 
    } 
    if (mMovie != null) { 
     int relTime = (int) ((now - movieStart) % mMovie.duration()); 
     mMovie.setTime(relTime); 
     mMovie.draw(canvas, getWidth()/2 - mMovie.width(), getHeight()/2 
      - mMovie.height()); 
     while (mMovieLoop-- > 0) { 
      this.invalidate(); 
     } 
    } 

.

+0

나는 gif가 반복적으로 반복되는 것을 확신합니다. .gif 애니메이션이 만들어지는 방법입니다. –

+0

음, 무효화를 호출하지 않으면 전혀 움직이지 않습니다. 그래서 무효화를 호출하는 횟수를 제어 할 수있는 방법이 있기를 바랬습니다. 나는 여전히 작동하지 않는 루핑 코드를 게시 할 것이다. – learner

답변

4

애니메이션 GIF를 한 번만 재생하려면 재생 시간이 지나면 invalidate()에 전화를 걸지 마세요.

if (movieStart == 0) { 
    movieStart = (int) now; 
} 

if (mMovie != null) { 
    int relTime = (int) (now - moviestart); 

    if (relTime > mMovie.duration()) { 
    relTime = mMovie.duration(); 
    } 

    mMovie.setTime(relTime); 
    mMovie.draw(canvas, 
     getWidth()/2 - mMovie.width()/2, 
     getHeight()/2 - mMovie.height()/2); 

    if (relTime < mMovie.duration()) { 
    invalidate(); 
    } 
} 
+0

작동하지만 버튼을 클릭하면 다시 시작하고 싶습니다! –

관련 문제