Android动画起始位置

时间:2014-11-06 01:24:39

标签: android animation

我的聊天客户端与Google Hangouts类似。在底部,我有一个用于消息输入的edittext框,右边有一个发送按钮。如果用户使用addTextChangedListener在消息框中包含文本,我可以根据发送按钮设置动画。但是发送按钮的初始位置应该在屏幕外,因为用户尚未输入任何文本。用户输入文本后,发送按钮应从右侧滑入。我需要帮助来弄清楚如何最初将发送按钮放在屏幕外,并将其设置为消息编辑文本旁边的屏幕上的动画。

要为“发送”按钮设置动画,我使用了属性动画...

send.animate()。xBy(-send.getWidth())。setDuration(1000);

谢谢大家的帮助!

1 个答案:

答案 0 :(得分:2)

如果您打算使用ObjectAnimators,那么您可以简单地使用用于创建ObjectAnimators的静态方法。

Object target = send
int from = -send.getWidth()
int to = 0
ObjectAnimator slider = ObjectAnimator.ofFloat(target, "x", from, to);
slider.setDuration(1000)
slider.start()

可以手动放置初始位置,只需直接调用send.setX(-send.getWidth()),或者先将Visiblity设置为View.Invisible,然后在AnimationListener中设置为View.Visible。

编辑:

如果您需要使用尺寸,可以将Runnable发布到视图,并在视图到位后立即运行。

send.post(new Runnable() {
   @Override
   public void run() {
      int from = -send.getWidth()
      int to = 0
      ObjectAnimator slider = ObjectAnimator.ofFloat(send, "x", from, to);
      slider.setDuration(1000)
      slider.start()
   }
});

在此之前,查看我的闪光灯的可能性很小。要解决此问题,您可以将其初始可见性设置为View.INVISIBLE,然后将其设置为View.VISIBLE中的Runnable