动画后将视图重置为原始位置

时间:2018-11-08 19:09:57

标签: android

我正在为视图设置动画,我想在动画结束后将视图重置为原始位置。

这就是我所拥有的:

rl2是相对布局

rl2.animate().translationX(-60).translationY(117).setDuration(2000);

我尝试设置它,但是不起作用:

rl2.clearAnimation();

3 个答案:

答案 0 :(得分:1)

clearAnimation();不会重置您的动画,只是停止它们并将它们从动画队列中删除。要撤消动画,您实际上需要撤消它们。因此,对于您的代码块,您将需要调用rl2.animate().translationX(0).translationY(0).setDuration(2000);将视图移回其原始位置。

答案 1 :(得分:1)

@Chris Stillwell 在他的answer中提到过,但是您可以在翻译动画后通过以下方式将View返回到它的原始位置

rl2.animate().translationX(0).translationY(0);

答案 2 :(得分:0)

我知道这个问题是很久以前提出的,但仍然有人会寻找答案。 我将Animation类用于此类事情;此类中有一个setFillAfter方法,因此可以设置是否要在动画结束后应用其变换。

Animation anim = new ScaleAnimation(
            1f, 1f, // Start and end values for the X axis scaling
            1f, 2f, // Start and end values for the Y axis scaling
            Animation.RELATIVE_TO_SELF, 0f, // Pivot point of X scaling
            Animation.RELATIVE_TO_SELF, 1f); // Pivot point of Y scaling
anim.setFillAfter(false); // no needed to keep the result of the animation
anim.setDuration(1000);
anim.setAnimationListener(new Animation.AnimationListener() {
    @Override
    public void onAnimationStart(Animation animation) {

    }

    @Override
    public void onAnimationEnd(Animation animation) {
                    
    }

    @Override
    public void onAnimationRepeat(Animation animation) {

    }
});
gangsterImage.startAnimation(anim);