我正在试图将两个动画“链接”在一起,所以当一个完成,另一个开始.这是正常工作,除了一个问题.第一个动画完成后,它回到原来的位置.我正在设置填充到真.我还缺少什么?
这是我正在使用的代码.注意,这是一个扩展LinearLayout的类.
// FIRST ANIMATION mAnimation = new TranslateAnimation(0,PANEL_END_X,0); mAnimation.setDuration(PANEL_TRANSITION_TIME); mAnimation.setFillAfter(true); mAnimation.setAnimationListener(new Animation.AnimationListener() { public void onAnimationEnd(Animation animation) { // FIRST ANIMATION COMPLETE,CALL THE SECOND ANIMATION startAnimation(mAlphaAnimation); } }); // SECOND ANIMATION mAlphaAnimation = new AlphaAnimation(1.0f,0.0f); mAlphaAnimation.setDuration(PANEL_ALPHA_TRANSITION_TIME); mAlphaAnimation.setFillAfter(true);
解:
我可以让我满意的唯一方法是使用AnimationSet,但设置第二个动画的起始偏移量,以启动第一个动画的偏移持续时间,加上一点点填充.在我的情况下,他们并不完全准确.
我尝试使用CommonsWare建议的各种值,但是我总是会获得某种类型的“捕捉”效果,其中值将在使用新值之前恢复为原始值.
解决方法
After the first animation is complete,it moves back to it’s original position. I am setting fill after to true. What else am I missing?
动画是瞬态效应.如果你想要的效果是永久的,你必须在onAnimationEnd()中自己做.在TranslateAnimation的情况下,您需要更改LayoutParams或受影响的部件的某些东西,以将其永久保持在其最终位置.或者,如果您将其从屏幕上翻译,请将可见性设置为View.GONE.