Как сделать, чтобы Gif-проигрыватель приостановился при первом открытии активности
Я реализовал Gif-проигрыватель фильмов, используя https://github.com/sbakhtiarov/gif-movie-view, он работает хорошо, но я хочу приостановить изображение Gif при первом запуске активности, что означает первое открытое действие, я попытался gif1.setPaused(true); но это не работает, так как я могу решить это? Пожалуйста, ребята, помогите решить это!!!
2 ответа
Я решаю это с помощью метода onDraw, просто изменить
@Override
protected void onDraw(Canvas canvas) {
//for infinitive time animate
/*if (mMovie != null) {
if (!mPaused) {
updateAnimationTime();
drawMovieFrame(canvas);
invalidateView();
} else {
drawMovieFrame(canvas);
}
}*/
//for one time animate
final long now = SystemClock.uptimeMillis();
if (mMovieStart == 0) {
mMovieStart = (int) now;
}
if (mMovie != null) {
if (!mPaused) {
int relTime = (int) (now - mMovieStart);
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();
}
} else {
drawMovieFrame(canvas);
}
}
}
И положить в MainActivity
gif1.setMovieResource(R.drawable.earth_tilt_animation);
gif1.setPaused(!gif1.isPaused());
Попробуй это
gif.setPaused(!gif.isPaused());
Потому что в библиотеке нет кода для gif1.setPaused(true);
Просто проверьте в GifMovieView.java
public void setPaused(boolean paused) {
this.mPaused = paused;
/**
* Calculate new movie start time, so that it resumes from the same
* frame.
*/
if (!paused) {
mMovieStart = android.os.SystemClock.uptimeMillis() - mCurrentAnimationTime;
}
invalidate();
}
Попробуйте сделать одну функцию в GifMovieView.java
public void stop() {
mMovie.stop;
invalidate();
}
Я не уверен, что это работает, но надеюсь, что это будет работать.