Как сделать, чтобы 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();
}

Я не уверен, что это работает, но надеюсь, что это будет работать.

Другие вопросы по тегам