使Imageview在动画后消失
Making Imageview disappear After Animation
我有一个方法可以为具有指定参数的 ImageView 对象创建动画:
public void animateMove(float x, float y, int milsecs)
{
float origX = view.getX();
float origY = view.getY();
view.setVisibility(View.VISIBLE);
Path linePath = new Path();
linePath.lineTo(x, y);
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "translationX", "translationY", linePath);
anim.setDuration(milsecs);
anim.start();
view.setVisibility(View.INVISIBLE); // this code is the problem
view.setX(origX);
view.setY(origY);
}
但是,当我调用 setVisibility 方法使 ImageView 不可见时,它与动画发生的同时运行,因此实际上什么也看不到。如果我删除这段代码,我可以很好地看到视图的动画。
如何使用此方法创建动画并仅在整个动画完成后才使其不可见?
尝试使用 ObjectAnimator
的状态信息方法之一,例如 isRunning()
或 isStarted()
if(anim.isStarted()) {
view.setVisibility(View.INVISIBLE);}
在 anim.start()
之前将此添加到您的代码中:
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
view.setVisibility(View.INVISIBLE);
view.setX(origX);
view.setY(origY);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});
我有一个方法可以为具有指定参数的 ImageView 对象创建动画:
public void animateMove(float x, float y, int milsecs)
{
float origX = view.getX();
float origY = view.getY();
view.setVisibility(View.VISIBLE);
Path linePath = new Path();
linePath.lineTo(x, y);
ObjectAnimator anim = ObjectAnimator.ofFloat(view, "translationX", "translationY", linePath);
anim.setDuration(milsecs);
anim.start();
view.setVisibility(View.INVISIBLE); // this code is the problem
view.setX(origX);
view.setY(origY);
}
但是,当我调用 setVisibility 方法使 ImageView 不可见时,它与动画发生的同时运行,因此实际上什么也看不到。如果我删除这段代码,我可以很好地看到视图的动画。
如何使用此方法创建动画并仅在整个动画完成后才使其不可见?
尝试使用 ObjectAnimator
的状态信息方法之一,例如 isRunning()
或 isStarted()
if(anim.isStarted()) {
view.setVisibility(View.INVISIBLE);}
在 anim.start()
之前将此添加到您的代码中:
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animation) {
}
@Override
public void onAnimationEnd(Animator animation) {
view.setVisibility(View.INVISIBLE);
view.setX(origX);
view.setY(origY);
}
@Override
public void onAnimationCancel(Animator animation) {
}
@Override
public void onAnimationRepeat(Animator animation) {
}
});