我已经成功地在我的项目中使用动画,使用 TranslateAnimation 对象,但是当我返回到 View 已设置动画的 Activity 时,它们会在默认位置重新绘制。
例如,
我创建了一个名为 HomeActivity 的 Activity 。内容按照 XML 中的定义进行绘制。 View (myTextView) 可能出现在位置 0。
我可以使用 TranslateAnimation 将 myTextView 移动到位置 1。
我可以单击一个按钮(或其他任何按钮)来启动,例如 MenuActivity。
我退出 MenuActivity 并恢复 HomeActivity。
(我所看到的)
myTextView 再次出现在位置 0。
(我想看到的)
myTextView 在位置 1 绘制。
这是我执行动画的方式。
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 中,这会导致 View 保留其动画后状态?或者我是否需要在开始新 Activity 之前保存他们的位置并在 onResume 中移动它们?还是完全有另一种方法?
如果您需要任何说明,请告诉我。
忘记说明了,最低 SDK 是 2.2 (API 8)。
提前致谢。
最佳答案
首先,不要为此使用 TranslateAnimation
,尝试使用 ObjectAnimator
,因为它实际上会移动 View 。使用 TranslateAnimation
时, View 永远不会改变位置,只是看起来如此。如果这还不够,请尝试在 onSaveInstanceState
中保存 View 的位置,在 onRestoreInstanceState
中您可以将 View 定位到该位置。
关于android - 如何让动画效果在 Activity 之间持续存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14441398/