2016-07-20 3 views
1

Я использую нижнюю часть анимации для каменного изображения. Я хочу, чтобы анимация начиналась с задержки на 2 секунды, и она должна заканчиваться через 1,5 секунды.
Наряду с этим, я хочу показать пылеулавливающее изображение, которое идет от альфа = 0 до альфа = 1 за 2 секунды. Я использовал AnimationUtil.loadAnimation().анимация альфа-замирания работает только один раз, когда снизу вверх анимация другого вида заканчивается в Android

Когда каменная анимация заканчивается, я хочу, чтобы изображение пыли перешло от альфа-1 к альфо-0 за 2 секунды. Я делаю это в методе onAnimationEnd(). Первый раз все идет хорошо. Но 2-й раз, изображение пыли сразу исчезает. Альфа-анимация отсутствует.

Исходный код прилагается:

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); 
    } 

ответ

0

Просто поместите ниже линии в onAnimationEnd (анимация анимация).

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

Надеюсь, это сработает.

Смежные вопросы