2012-07-12 156 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); 
} 

希望這可以幫助!