1

我已经在我的项目中成功地使用了动画,带有 TranslateAnimation 对象,但是当我返回视图已被动画化的活动时,它们会在默认位置重绘。

所以,例如,

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

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

  3. 我可以单击一个按钮(或其他任何东西)来启动,比如说,MenuActivity。

  4. 我退出 MenuActivity 并恢复 HomeActivity。

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

(我想看到的)
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 中)会导致视图保持其动画后状态?或者我是否需要在开始新活动之前保存他们的位置并将它们转移到 onResume 中?还是完全有另一种方式?

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

忘了说明,最低 SDK 为 2.2 (API 8)。

提前致谢。

4

1 回答 1

1

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

于 2013-01-21T15:08:59.300 回答