如何在活动之间保持动画效果?

时间:2013-01-21 15:03:32

标签: android android-layout android-animation

我已经成功地使用TranslateAnimation对象在我的项目中使用动画,但当我返回其视图已设置动画的活动时,它们会重新绘制默认位置。

所以,例如,

  1. 我创建了一个名为HomeActivity的活动。内容按XML中的定义绘制。 View(myTextView)可能出现在position0。

  2. 我可以使用TranslateAnimation将myTextView移动到position1。

  3. 我可以点击一个按钮(或其他)来启动,例如,MenuActivity。

  4. 我退出MenuActivity并恢复HomeActivity。

  5. (我所看到的)
    myTextView再次出现在position0。

    (我想看到的)
    myTextView在position1处绘制。

    以下是我执行动画的方式。

    TextView myTextview = (TextView)findViewById(R.id.mytextview);
    
    private void animate()
    {
    Animation anim = new TranslateAnimation(0, displacementX, 0, displacementY);
    anim.setDuration(200);
    anim.setAnimationListener(this); // This activity implements AnimationListener
    anim.setFillEnabled(true);
    anim.setFillAfter(true);
    myTextview.startAnimation(anim);
    }
    
    @Override
    public void onAnimationEnd( Animation animation )
    {
     myTextview.clearAnimation();
    }
    

    我是否应该设置任何标志,可能在上面的过程中,onPause或onAnimationEnd,会导致视图保留其动画后状态?或者我是否需要在开始新活动之前保存他们的位置并将其转移到onResume?或者还有另一种方式吗?

    如果您需要任何澄清,请告诉我。

    忘记指定,最小SDK为2.2(API 8)。

    提前致谢。

1 个答案:

答案 0 :(得分:1)

首先,请不要使用TranslateAnimation,尝试使用ObjectAnimator,因为它实际上会移动视图。使用TranslateAnimation时,视图永远不会改变位置,它只是如此。如果这还不够,请尝试在onSaveInstanceState中保存视图的位置,在onRestoreInstanceState中,您可以将视图定位到此位置。