【问题标题】:How to stop gif from looping in android如何阻止gif在android中循环
【发布时间】:2014-01-19 17:27:55
【问题描述】:

我在画布上播放了一个 gif。我的 gif 一直在循环播放。有谁知道如何从循环中发现它?这是我的代码:

if (movieStart == 0) {
        movieStart = (int) now;
    }
    if (mMovie != null) {
        int relTime = (int) ((now - movieStart) % mMovie.duration());
        mMovie.setTime(relTime);
        mMovie.draw(canvas, getWidth() / 2 - mMovie.width(), getHeight() / 2
            - mMovie.height());
    this.invalidate();
    }

我的猜测是,如果我使用 setTime,我可以让它运行良好。但我找不到 setTime 的任何文档?它的具体作用是什么?

附加试用版 1

if (movieStart == 0) {
        movieStart = (int) now;
    }
    while (mMovieLoop-- > 0) {
        if (mMovie != null) {
            int relTime = (int) ((now - movieStart) % mMovie.duration());
            mMovie.setTime(relTime);
            mMovie.draw(canvas, getWidth() / 2 - mMovie.width(), getHeight() / 2
                - mMovie.height());

            this.invalidate();
        }
    }

附加试用版 2

if (movieStart == 0) {
        movieStart = (int) now;
    }
    if (mMovie != null) {
        int relTime = (int) ((now - movieStart) % mMovie.duration());
        mMovie.setTime(relTime);
        mMovie.draw(canvas, getWidth() / 2 - mMovie.width(), getHeight() / 2
            - mMovie.height());
        while (mMovieLoop-- > 0) {
            this.invalidate();
        }
    }

我的 gif 也是由 4 帧组成的。

【问题讨论】:

  • 我很确定 gif 是用来重复循环的。 .gif 动画就是这样制作的。
  • 好吧,如果我不调用 invalidate 它根本就没有动画。所以我希望有一种方法可以控制我调用 invalidate 的次数以使其工作。我将发布仍然无法正常工作的循环代码。

标签: android android-layout animated-gif movie


【解决方案1】:

如果您只想播放一次动画 gif,请在超过持续时间后停止调用 invalidate()

if (movieStart == 0) {
  movieStart = (int) now;
}

if (mMovie != null) {
  int relTime = (int) (now - moviestart);

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

【讨论】:

    猜你喜欢
    • 2020-11-27
    • 1970-01-01
    • 2013-03-16
    • 1970-01-01
    • 1970-01-01
    • 2011-06-27
    • 2021-03-25
    • 2023-03-17
    • 2019-08-09
    相关资源
    最近更新 更多