我已经成功地使用TranslateAnimation对象在我的项目中使用动画,但当我返回其视图已设置动画的活动时,它们会重新绘制默认位置。
所以,例如,
我创建了一个名为HomeActivity的活动。内容按XML中的定义绘制。 View(myTextView)可能出现在position0。
我可以使用TranslateAnimation将myTextView移动到position1。
我可以点击一个按钮(或其他)来启动,例如,MenuActivity。
我退出MenuActivity并恢复HomeActivity。
(我所看到的)
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)。
提前致谢。
答案 0 :(得分:1)
首先,请不要使用TranslateAnimation
,尝试使用ObjectAnimator
,因为它实际上会移动视图。使用TranslateAnimation
时,视图永远不会改变位置,它只是如此。如果这还不够,请尝试在onSaveInstanceState
中保存视图的位置,在onRestoreInstanceState
中,您可以将视图定位到此位置。