45

在我的应用程序中,我将在一个动画之后设置 alpha。就像:

hideMenu = AnimationUtils.loadAnimation( getApplication(), R.anim.menu_layout_hide);
 menuLayout.startAnimation(hideMenu);
 menuLayout.setVisibility(View.GONE);

但我想在 Alpha 设置视图之前设置 1 秒的延迟。因为我无法看到该布局的动画。那么怎么可能呢?

谢谢。

4

5 回答 5

84

在您的动画xml文件中,您可以使用android:startOffset属性:

android:startOffset int. The amount of milliseconds the animation delays after start() is called.
于 2011-12-07T09:40:29.717 回答
78

你不能用

android:startOffset 整数。调用 start() 后动画延迟的毫秒数。

在你的动画 xml 中?

请参阅动画资源文档

于 2011-12-07T09:41:30.260 回答
28

假设您使用的是视图.animate()方法,您可以设置起始偏移量:

view.animate().x(100)
              .setDuration(5000)
              .setStartDelay(1000);
于 2014-08-06T15:20:10.413 回答
9

Handler 是一个很好的技术来实现这一点。

new Handler().postDelayed(new Runnable()
{
   @Override
   public void run()
   {
     view.startAnimation(animation);
   }
}, 1000);
于 2016-07-21T13:31:33.183 回答
8

在你的情况下,你可以简单地这样做

hideMenu = AnimationUtils.loadAnimation( getApplication(), R.anim.menu_layout_hide);

hideMenu.setStartOffset(1000);

 menuLayout.startAnimation(hideMenu);
 menuLayout.setVisibility(View.GONE);

在这种情况下,您可以从活动中动态控制开始时间的值

于 2017-07-12T20:19:26.103 回答