У меня есть gif, играющий на холсте. Мой gif продолжает зацикливаться. Кто-нибудь знает, как определить это из цикла? вот мой код:Как остановить gif от цикла в android
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? Что он делает точно?
ДОПОЛНИТЕЛЬНЫЕ ИСПЫТАНИЯ 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();
}
}
ДОПОЛНИТЕЛЬНЫЕ ИСПЫТАНИЯ 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();
}
}
Кроме того, мой GIF состоит из 4-х кадров.
Я вполне уверен, что gif предназначен для циклического повторения. Именно так создается анимация .gif. –
Ну, если я не называю invalidate, он не оживляет вообще. Поэтому я надеялся, что есть способ контролировать количество раз, когда я называю invalidate, чтобы заставить его работать. Я напишу свой код цикла, который все еще не работает. – learner