2012-07-12 153 views
15

我在制作图片库应用程序。我目前在底部有一个带有文本视图的imageview。目前它只是半透明的。我想让它淡入,等待3秒,然后淡出90%。把重点放在它上面或加载一张新照片将使它重复这个循环。我读了十几页,尝试了一些东西,但没有成功。我所得到的是淡入淡出TextView动画 - 淡入,等待,淡出

+0

什么都没有? – 2012-07-12 04:22:53

回答

3

您可以使用额外的动画对象(不会修改其alpha)来防止即时淡出,为您的淡入效果设置animationListener,并在淡入的动画结束时启动额外的动画对象,然后你开始淡出的额外动画对象的动画后,尝试下面的链接,它会帮助..

Auto fade-effect for textview

39
protected AlphaAnimation fadeIn = new AlphaAnimation(0.0f , 1.0f) ; 
protected AlphaAnimation fadeOut = new AlphaAnimation(1.0f , 0.0f) ; 
txtView.startAnimation(fadeIn); 
txtView.startAnimation(fadeOut); 
fadeIn.setDuration(1200); 
fadeIn.setFillAfter(true); 
fadeOut.setDuration(1200); 
fadeOut.setFillAfter(true); 
fadeOut.setStartOffset(4200+fadeIn.getStartOffset()); 

适用于白色背景。否则,您需要在实例化AlphaAnimation类时切换值。像这样:

AlphaAnimation fadeIn = new AlphaAnimation(1.0f , 0.0f); 
AlphaAnimation fadeOut = new AlphaAnimation(0.0f , 1.0f); 

这适用于黑色背景和白色文本颜色。

2

那是,我已经在我的项目用于循环褪色的解决方案TextView上的动画/淡出动画:

private void setUpFadeAnimation(final TextView textView) { 
    // Start from 0.1f if you desire 90% fade animation 
    final Animation fadeIn = new AlphaAnimation(0.0f, 1.0f); 
    fadeIn.setDuration(1000); 
    fadeIn.setStartOffset(3000); 
    // End to 0.1f if you desire 90% fade animation 
    final Animation fadeOut = new AlphaAnimation(1.0f, 0.0f); 
    fadeOut.setDuration(1000); 
    fadeOut.setStartOffset(3000); 

    fadeIn.setAnimationListener(new Animation.AnimationListener(){ 
     @Override 
     public void onAnimationEnd(Animation arg0) { 
      // start fadeOut when fadeIn ends (continue) 
      textView.startAnimation(fadeOut); 
     } 

     @Override 
     public void onAnimationRepeat(Animation arg0) { 
     } 

     @Override 
     public void onAnimationStart(Animation arg0) { 
     } 
    }); 

    fadeOut.setAnimationListener(new Animation.AnimationListener(){ 
     @Override 
     public void onAnimationEnd(Animation arg0) { 
      // start fadeIn when fadeOut ends (repeat) 
      textView.startAnimation(fadeIn); 
     } 

     @Override 
     public void onAnimationRepeat(Animation arg0) { 
     } 

     @Override 
     public void onAnimationStart(Animation arg0) { 
     } 
    }); 

    textView.startAnimation(fadeOut); 
} 

希望这可以帮助!