2013-03-28 65 views
0

您好动画有一个问题,实际上我希望在更改资源时淡入我的ImageView。 它不工作,我可以改变资源,但没有任何动画。动画不能用于更改ImageView Drawable

private void checkX() { 
    // TODO Auto-generated method stub 
    switch (x) { 
    case (1): { 
     startingAnimation(); 
     xImg.setImageResource(R.drawable.test_uno); 
     endingAnimation(); 
     break; 
    } 
    case (2): { 
     startingAnimation(); 
     xImg.setImageResource(R.drawable.test_due); 
     endingAnimation(); 
     break; 
    } 
    case (3): { 
     startingAnimation(); 
     xImg.setImageResource(R.drawable.test_tre); 
     endingAnimation(); 
     break; 
    } 
    case (4): { 
     startingAnimation(); 
     xImg.setImageResource(R.drawable.test_quattro); 
     endingAnimation(); 
     break; 
    } 
    case (5): { 
     x = 1; 
     checkX(); 
     break; 
    } 
    case (0): { 
     x = 4; 
     checkX(); 
     break; 
    } 
    } 
} 


private void endingAnimation() { 
    // TODO Auto-generated method stub 
    ObjectAnimator animation2 = ObjectAnimator.ofFloat(xImg, "alpha", 255); 
    animation2.setDuration(1000); 
    animation2.start(); 

} 

private void startingAnimation() { 
    // TODO Auto-generated method stub 
    ObjectAnimator animation = ObjectAnimator.ofFloat(xImg, "alpha", 0); 
    animation.setDuration(1000); 
    animation.start(); 
} 

每当我按下一个按钮(即将X加1或减1),都会调用checkX。

我如何使动画和ImageView资源更改?

回答

0

尝试在调用动画的onAnimationEnd时更改图像源。例如:

animation.addListener(new AnimatorListener() { 

    @Override 
    public void onAnimationStart(Animator animation) { } 

    @Override 
    public void onAnimationRepeat(Animator animation) { } 

    @Override 
    public void onAnimationEnd(Animator animation) { 
     // change your ImageView's source here 
    } 

    @Override 
    public void onAnimationCancel(Animator animation) { } 
}); 
+0

非常感谢! – Giamme 2013-03-28 11:55:36

0

在您的ImageView上应用淡出动画,并将animationListener设置为它。在动画最终改变你的看法资源,并设置淡入动画上

对于淡入动画

Animation fadeIn = new AlphaAnimation(0, 1); 
      fadeIn.setInterpolator(new DecelerateInterpolator()); 
      fadeIn.setDuration(1000); 
      final AnimationSet animation = new AnimationSet(false); 
      animation.addAnimation(fadeIn); 

对于淡出动画

Animation fadeOut = new AlphaAnimation(1, 0); 
       fadeOut.setInterpolator(new AccelerateInterpolator()); 
       fadeOut.setDuration(300); 
       final AnimationSet animation = new AnimationSet(false); 
       animation.addAnimation(fadeOut); 

这就是你如何在动画实现听者

fadeout.setAnimationListener(new Animation.AnimationListener(){ 

      @Override 
      public void onAnimationStart(Animation arg0) { 
      }   

      @Override 
      public void onAnimationRepeat(Animation arg0) { 
      }   

      @Override 
      public void onAnimationEnd(Animation arg0) { 
       //change resource of Imageview here    
      } 
     }); 
+0

如果有帮助,你可以接受答案。很高兴帮助! CHEARS – 2013-03-28 12:12:46