1

我的应用程序中的动画有问题,而且系统时间可以更改。我以这种方式创建动画对象:

animator = new Animator(600, Animator.INFINITE, Animator.RepeatBehavior.REVERSE, setter);

setter 是一个 alpha 属性,从 0.0 到 1.0 不等。问题是每当我更改系统时间时,动画都会停止/阻塞。它有时会在一段时间后重新启动,具体取决于我设置的系统时间。有没有办法解决这个问题?非常感谢。

4

1 回答 1

2

放入一个 Timer 并安排在动画师的同一时间段内工作(计时器的run方法将实例化动画师对象)。因此,每当动画师停止时,它将像以下方式重新实例化:
计时器方法检查动画师是否正在工作,当答案是否定的时,它将实例化另一个具有相同参数的动画师,但仅在一个period time 持续时间等于剩余时间。

代码示例:

public void execute() {
start();
timer_.scheduleRepeating(100);
}

public void start() {
    timer_ = new Timer() {
       public void run() {
        update();
        }
    };
}


public void update() {
    if (time > neededTime) {
        timer_.cancel();
    }else {
      if(!animator) {  //needs some optimization
        animator = new Animator( ....
      }
    }   
 }  
于 2012-05-25T10:47:49.940 回答