android - 如何让动画效果在 Activity 之间持续存在?

标签 android android-layout android-animation

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

例如,

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

  2. 我可以使用 TranslateAnimation 将 myTextView 移动到位置 1。

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

  4. 我退出 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/

相关文章:

android - 可穿戴设备未安装应用程序(Android Wear 功能标准)

android - Android 中线性布局的透明 View

android - 在使用 bringToFront() 方法时遇到问题

android - 动画围绕 ImageView 的圆圈

android Lollipop 动画故障

android - 如何让 Spinner 像 Gmail 应用程序一样在抽屉导航内将项目显示为列表?

android - Sharedpreferences 与 Sqlite 数据库

Android如何创建弹出窗口

java - 无法放大巴士路线图

java:将动画向上转换为 CustomAnimation 时出现 ClassCastException