我使用此代码在android中完成动画视图 当我将保证金设置为零或保证金减去当前保证金时不会产生动画
的问题代码
int margin = 100;
ValueAnimator varl = ValueAnimator.ofInt(margin);
varl.setDuration(200);
varl.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) myView.getLayoutParams();
lp.setMargins((Integer) animation.getAnimatedValue(), 0, 0, 0);
myView.setLayoutParams(lp);
}
});
varl.start();
现在当我将边距设置为100时,它会动画,但是当我想将其设置为零时,它的设置边距没有动画
int margin = 0;
ValueAnimator varl = ValueAnimator.ofInt(margin);
varl.setDuration(200);
varl.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
@Override
public void onAnimationUpdate(ValueAnimator animation) {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams) myView.getLayoutParams();
lp.setMargins((Integer) animation.getAnimatedValue(), 0, 0, 0);
myView.setLayoutParams(lp);
}
});
varl.start();
答案 0 :(得分:2)
问题在于你没有正确使用ValueAnimator.ofInt(int... values);
:你应该明确告诉动画师从哪个到它应该设置哪个值。因此,例如,您应该从当前值动画到所需值。如果您以前的值是 50 ,那么该语句应如下所示:
ValueAnimator varl = ValueAnimator.ofInt(50, margin);
答案 1 :(得分:2)
您可以使用我的library:
ViewPropertyObjectAnimator.animate(myView).leftMargin(100).setDuration(200).start();