如何在设置视图的alpha值之前创建1秒的延迟?

45

在我的应用程序中,我将在动画后设置透明度。

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

但我希望在将 Alpha 设置为视图之前设置 1 秒的延迟,因为这样我才能看到该布局的动画效果。那么如何实现呢?

谢谢。


请参考此示例:https://dev59.com/35Hea4cB1Zd3GeqPq48f#71824377 - Mori
5个回答

87

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

android:startOffset int. The amount of milliseconds the animation delays after start() is called.

谢谢回复。让我试试看。 - Shreyash Mahajan
如果您不介意,在动画中使用postDelayed方法并没有意义,因为动画本身已经有setStartDelay方法。请不要把我的话当作冒犯,我只是说出了自己的感受。 - duggu

80

你不能在动画XML中使用 android:startOffset 属性吗?

android:startOffset 是一个整数值,代表动画在调用 start() 方法后延迟的毫秒数。

请参阅动画资源文档


29

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

view.animate().x(100)
              .setDuration(5000)
              .setStartDelay(1000);

10

Handler是实现这一目标的好技术。

new Handler().postDelayed(new Runnable()
{
   @Override
   public void run()
   {
     view.startAnimation(animation);
   }
}, 1000);

8
在您的情况下,您可以简单地这样做。
hideMenu = AnimationUtils.loadAnimation( getApplication(), R.anim.menu_layout_hide);

hideMenu.setStartOffset(1000);

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接