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