0

我已经使用https://github.com/sbakhtiarov/gif-movie-view实现了 Gif 电影播放器​​,它运行良好,但我想在第一次启动活动时暂停 Gif 图像,这意味着第一次打开活动,我尝试了 gif1.setPaused(true ); 但它不工作所以我该如何解决它?请各位大神帮忙解决!!!

4

2 回答 2

1

我使用 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());
于 2016-05-27T06:01:02.807 回答
0

尝试这个

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();
}

我不确定它是否有效,但希望它会有效。

于 2016-05-26T14:14:35.577 回答