我使用https://github.com/sbakhtiarov/gif-movie-view实现了Gif电影播放器,它工作得很好但是我想在第一次开始活动时暂停Gif图像,这意味着首次打开活动,我尝试了 gif1.setPaused(true ); 但它没有工作,所以我该如何解决?请大家帮忙解决一下!!!
答案 0 :(得分: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());
答案 1 :(得分: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();
}
我不确定它是否有效,但希望它能奏效。