【问题标题】:android: How do I check that a movie has done playing?android:如何检查电影是否已播放完毕?
【发布时间】:2014-01-25 23:30:04
【问题描述】:

我正在使用以下代码运行 gif 电影

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

我的电影运行良好。我的问题是:我怎么知道电影何时播放完毕? (当然我有一个动作需要在电影结束时开始。)

顺便说一句,我正在使用android.graphics.Movie

【问题讨论】:

  • 我从未与android.graphics.Movie 合作过,但是,假设您粘贴的代码位于onDraw() 中,那么在relTime >= mMovie.duration() 评估为true 之后,电影不应该完全播放一次吗?您的代码已经检查过了,只需触发您的操作而不是 relTime = mMovie.duration();
  • @desseim 您的建议有所帮助。请您重新发布作为回复,以便我可以将此问题标记为已解决?
  • 完成,感谢您的建议并很高兴它有所帮助:)

标签: java android android-layout android-canvas animated-gif


【解决方案1】:

假设您粘贴的代码位于 onDraw() 中,那么在 relTime >= mMovie.duration() 评估为 true 之后,电影应该已经完整播放了一次。 您的代码已经对其进行了检查,因此您应该触发您的操作,而不是 relTime = mMovie.duration();

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

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

mMovie.setTime(relTime < mMovie.duration() ? relTime : mMovie.duration());
mMovie.draw(canvas, 
    getWidth() / 2 - mMovie.width() / 2, 
    getHeight() / 2 - mMovie.height() / 2);

if (relTime >= mMovie.duration()) {
    // move has played once
    fireAction();  // or set a member variable or whatever
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-07
    • 1970-01-01
    相关资源
    最近更新 更多