当另一个视图的自下而上动画在Android中完成时,alpha淡化动画只能工作一次

时间:2016-07-20 16:51:42

标签: android

我正在使用自下而上的动画作为石头图像。我希望动画以2秒的延迟开始,它应该在1.5秒内完成 与此同时,我想要在2秒内显示从alpha = 0到alpha = 1的吹灰图像。我使用了AnimationUtil.loadAnimation()。

当石头动画结束时,我希望尘埃图像在2秒内从alpha 1变为alpha 0。我在onAnimationEnd()方法中这样做。第一次一切顺利。但第二次,尘埃图像立即消失。没有阿尔法动画。

附上源代码:

private void showAnimation(Context context){
  final FrameLayout stone = (FrameLayout) (view.findViewById(R.id.Stone));
  stone.setVisibility(View.VISIBLE);

  final FrameLayout dust = (FrameLayout) (view.findViewById(R.id.img_Dust));
  dust.setVisibility(View.VISIBLE);
  dust.animate().alpha(1f).setDuration(1500);



  final Animation slideUp = AnimationUtils.loadAnimation(context,R.anim.stone_up);

  slideUp.setAnimationListener(new Animation.AnimationListener() {
     @Override
     public void onAnimationEnd(Animation animation) {
        stone.setVisibility(View.GONE);


        dust.animate().alpha(0f).setDuration(2000).setListener(new AnimatorListenerAdapter() {
           @Override
           public void onAnimationEnd(Animator animation) {
              super.onAnimationEnd(animation);

                 dust.setVisibility(View.GONE);

           }
        });
     }

     @Override
     public void onAnimationRepeat(Animation animation) {
     }

     @Override
     public void onAnimationStart(Animation animation) {

     }
  });
  stone.setAnimation(slideUp);
  }

1 个答案:

答案 0 :(得分:1)

将下面的行放在onAnimationEnd(动画动画)中。

if(stone.getVisibility() ==  View.GONE) {
   dust.setVisibility(View.GONE);
}

希望,它会奏效。