2015-11-16 3 views
0

При первом щелчке значка onAnimationStart() не воспроизводится, но onAnimationEnd(). В последующих кликах обе игры. Кто-нибудь знает, почему?Android: onAnimationStart пропустил первый раз

private void animateOnAwesome(final ImageButton awesomeIcon) { 
    Animation animateOnAwesome = AnimationUtils.loadAnimation(getContext(), 
      R.anim.hold); 
    awesomeIcon.startAnimation(animateOnAwesome); 
    animateOnAwesome.setAnimationListener(new Animation.AnimationListener() { 
     @Override 
     public void onAnimationStart(Animation animation) { 
      switch (ParseApplication.currentPosition) { 
       case 0: 
        Glide.with(getContext()).load(R.raw.awesomeddd_light).asGif().into(awesomeIcon); 
        break; 
       case 1: 
        Glide.with(getContext()).load(R.raw.awesomeddd_dark).asGif().into 
          (awesomeIcon); 
        break; 
       default: 
        Log.d("NO_THEME", "No theme selected."); 
        break; 
      } 
     } 

     public void onAnimationEnd(Animation anim) { 
      awesomeIcon.setImageResource(R.drawable.awesomeddd); 
     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 

     } 
    }); 
} 

ответ

0

Вы начинаете анимацию перед настройкой слушателей. Это должно сделать трюк:

animateOnAwesome.setAnimationListener(new Animation.AnimationListener() { 
    @Override 
    public void onAnimationStart(Animation animation) { 
     switch (ParseApplication.currentPosition) { 
      case 0: 
       Glide.with(getContext()).load(R.raw.awesomeddd_light).asGif().into(awesomeIcon); 
       break; 
      case 1: 
       Glide.with(getContext()).load(R.raw.awesomeddd_dark).asGif().into 
         (awesomeIcon); 
       break; 
      default: 
       Log.d("NO_THEME", "No theme selected."); 
       break; 
     } 
    } 

    public void onAnimationEnd(Animation anim) { 
     awesomeIcon.setImageResource(R.drawable.awesomeddd); 
    } 

    @Override 
    public void onAnimationRepeat(Animation animation) { 

    } 
}); 

awesomeIcon.startAnimation(animateOnAwesome); 
+0

Хорошо поймать, но это не решило проблему. Он по-прежнему пропускает onAnimationStart() первый ход. –

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