我创建了以下动画:
public class MarginAnimation extends Animation {
private final int fromX;
private final int toX;
private final View view;
public MarginAnimation(final View view, final int fromX, final int toX) {
this.fromX = fromX;
this.toX = toX;
this.view = view;
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
MPLog.debug("Animation","interpolatedTime = "+interpolatedTime);
setMargin(Math.round(fromX + (toX - fromX) * interpolatedTime));
}
private void setMargin(int margin){
RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams)view.getLayoutParams();
params.rightMargin = margin;
view.setLayoutParams(params);
}
}
但在这里我发现我的动画有时会停止。这是日志:
02-22 13:14:44.138 25395-25395/com.test.test D/Animation: Start
02-22 13:14:44.148 25395-25395/com.test.test D/Animation: interpolatedTime = 0.0
02-22 13:14:44.148 25395-25395/com.test.test D/Animation: interpolatedTime = 0.0
02-22 13:14:44.163 25395-25395/com.test.test D/Animation: interpolatedTime = 0.017721295
02-22 13:14:44.183 25395-25395/com.test.test D/Animation: interpolatedTime = 0.0656842
02-22 13:14:44.198 25395-25395/com.test.test D/Animation: interpolatedTime = 0.14644662
02-22 13:14:44.218 25395-25395/com.test.test D/Animation: interpolatedTime = 0.2522707
02-22 13:14:44.233 25395-25395/com.test.test D/Animation: interpolatedTime = 0.36806342
此案例在0.36处停止,也未调用AnimationListener.onAnimationEnd()。有时它工作正常,达到1.0。为什么会这样?如何解决?