Android代码中的TranslationAnimation

时间:2010-06-23 00:14:14

标签: android user-interface animation

我能够让动画在模拟器上运行 - 但是我的问题是它动画了一秒钟,然后在完成动画后立即回到原来的位置。我怎么能阻止这种情况发生。

这是我为对象设置动画的方式:

    private void doAnimations() {

  logo.setVisibility(View.INVISIBLE);
  logo.setBackgroundDrawable(null);
  logo.setMaxHeight((logo.getHeight()/2));
  Animation animation = new TranslateAnimation(0, 0, 0, -200);
  usernameEdit.startAnimation(animation);
 }

感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:1)

  

我怎样才能阻止这种情况发生。

在动画上注册一个监听器。然后,当听众被告知动画完成时,对实际布局做一些事情以使您的更改永久化。

答案 1 :(得分:1)

虽然animation.setFillAfter(true);是一个好的开始,但根据我的经验,我已经看到,虽然通过这种方法,可见视图确实转移到动画停止的地方,但仍然控制仍然保持在原来的位置...... / p>

为了说明它,让我们说你在位置A有一个按钮“btn1”,动画在位置B处停止,现在当你设置animation.setFillAfter(true);时,动画停止后,视图将在位置B,但点击它不会工作。虽然如果你点击位置A(没有任何东西可见),btn1的onClickListener方法将被调用...

因此,正如我之前所说,视图显示(位置B)但不显示控件(保留在位置A)...所以你最好选择马克(CommonsWare)设置动画监听器的方法并制作动画停止时所需的更改......

希望这有帮助!