2012-08-07 49 views
1

我在按鈕上執行淡入淡出效果。在android中重置動畫效果

AnimationSet set = new AnimationSet(true); 
Animation animation2 = new AlphaAnimation((float) 0, 1); 
animation2.setDuration(1500); 
animation2.setRepeatMode(0); 
set.addAnimation(animation2); 
set.setFillAfter(true); // leaves the animation in its final status 
btn.startAnimation(set); 

我正在使用setFillAfter(true)選項使按鈕可見。這工作正常。現在我想再次執行動畫,,但不能再次設置我的按鈕在屏幕上不可見,除非我重新啓動應用程序。 (alos嘗試無效(),但沒有成功......)

任何想法都將「如此」受到歡迎。

在此先感謝! 保羅

+0

你嘗試'clearAnimation()'你再申請之前? – iTurki 2012-08-07 23:49:37

回答

3

謝謝你的幫助。其實我在developpers doc上找到了答案。 「視頻動畫」(我試圖做的)和「屬性動畫」之間有很大的區別。基本上查看動畫重繪您正在處理的視圖的圖像,但不影響原始視圖。所以,如果你從例子中翻譯你的視圖,屏幕上的視圖會被移動,但是它會以編程方式移動,並保持其初始狀態,並將捕捉到原始位置的事件。

這裏的解釋是:

如何物業動畫從觀看動畫視圖動畫 系統提供了唯一的動畫視圖對象的功能是不同的,所以如果你 想動畫非View對象,必須執行您自己的 代碼來執行此操作。例如,視圖動畫系統也受限於事實,即它僅暴露視圖對象的幾個方面來動畫,例如視圖的縮放和旋轉,而不是背景 顏色。

視圖動畫系統的另一個缺點是它只在修改視圖的地方修改了 而不是實際的視圖本身。對於 的實例,如果你動畫了一個按鈕在屏幕上移動, 按鈕繪製正確,但是你可以點擊的實際位置 這個按鈕不會改變,所以你必須實現你自己的邏輯來處理這個 。

使用屬性動畫系統,這些約束完全被刪除,並且可以動畫任何對象的任何屬性(視圖和 非視圖),並且對象本身實際上被修改。動畫系統 動畫的執行方式也更加健壯。在高層次上,您可以將動畫設計人員分配到要製作動畫的屬性 ,如顏色,位置或大小,並且可以定義動畫的各個方面,例如插值和多個動畫師的同步。

然而,視圖動畫系統需要更少的時間來設置,並且 需要更少的代碼來編寫。如果視圖動畫完成您需要執行的所有操作,或者您的現有代碼已按照您想要的方式運行 ,則無需使用屬性動畫系統。如果出現用例,那麼 也可能適用於不同的 情況下的兩種動畫系統。

http://developer.android.com/guide/topics/graphics/prop-animation.html

對於我來說,我使用屬性動畫和我的一切需要的動畫相匹配。感謝您的支持! :)

保羅

0

取出set.setFillAfter(true);並使用animationListener到按鈕設置爲可見當動畫結束,它將給用戶相同的效果,你就可以使其與View.setVisibility(View.INVISIBLE);

再次無形
AnimationListener animListener; 


animListener = new Animation.AnimationListener() { 

     @Override 
     public void onAnimationStart(Animation animation) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationRepeat(Animation animation) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void onAnimationEnd(Animation animation) { 
      btn.setVisibility(View.VISIBLE); 
     } 
}; 
animation2.setAnimationListener(animListener); 
+0

你好,拿出'set.setFillAfter(true)'然後用btn.setVisibility()工作,但不是很流暢。你可以看到有一個非常短的「空白」時刻......這個想法聽起來很棒。你不覺得可以採取一些行動來取消動畫效果嗎? – Paul 2012-08-08 18:45:23

+1

@Paul你嘗試過'clearAnimation()'就像iturki建議的那樣? – FoamyGuy 2012-08-08 23:18:42

+0

我想我沒有,但使用屬性動畫解決了我的問題。看我的下一篇文章。 :) – Paul 2012-08-17 11:36:57