2015-04-06 24 views
13

我試圖在Android視圖上動畫alpha(兩個動畫都會淡入淡出)。如果默認情況下視圖的alpha初始爲1,那麼這一切都可以正常工作。不過,我想這個觀點是透明的開始,所以我把它的alpha爲零:如果它的初始值爲零,則Android不設置動畫效果

indicatorContainer.setAlpha(0);

現在,動畫將無法正常工作。它永遠不會變得可見。如果我註釋掉該行,視圖最初顯示(我不想),但是當我調用它們時,我的動畫效果很好。我雖然這是微不足道的,但顯然不是。我究竟做錯了什麼?

更新:我也試過,而不是整數0浮點0f閱讀涉及setAlpha方法的一些API變化之後,考慮到我的呼叫可以被調用不正確的過載,但什麼都沒有改變。

回答

8

嘗試這樣:

mRelativeLayout.setAlpha(0f); 
    mRelativeLayout.animate().alpha(1f).setDuration(500).setListener(new AnimatorListenerAdapter() { 
     @Override 
     public void onAnimationEnd(Animator animation) { 
      super.onAnimationEnd(animation); 
      mRelativeLayout.setVisibility(View.VISIBLE); 
      //OR 
      mRelativeLayout.setAlpha(1f); 
     } 
    }); 
+0

情況下工作:'動畫動畫=新AlphaAnimation( indicatorContainer.getAlpha(),1f); animation.setFillAfter(true); animation.setDuration(200); indicatorContainer.startAnimation(動畫);'是不是有辦法做到這一點? –

+1

嘗試將佈局可見性屬性設置爲在佈局xml中不可見。在開始alpha動畫調用之前(你的視圖).setVisibility(View.VISIBLE); –

+0

它的工作方式..任何想法,爲什麼它不工作? –

1

我面臨同樣的問題,即indicatorContainerImageButton。 下面的代碼修復了這個非常,非常惱人的問題...

// XXX: Does not work if just 0. It calls `ImageView#setAlpha(int)` deprecated method. 
indicatorContainer.setAlpha(0.0f); 
ViewCompat.animate(indicatorContainer).alpha(1); 
0

一個可以嘗試以下的,更簡單的方法:

view.animate()α(1).setDuration(ANIMATION_DURATION);

0

這裏是我是如何能夠還挺解決這 - 不是特別優雅,但管理

  1. 視圖設置爲你想要0.0F或以其他方式爲初始α。

  2. 當事件發生在需要視圖具有更多(或更少)可見性/ alpha的地方時 - 例如,在開始動畫之前 - 此時您可以更新alpha,然後在視圖上運行動畫

我仍然得到一些振盪格局動畫重複時,但這種方法可能會爲我在那裏用簡單的動畫這樣的動畫,不重複

相關問題