2011-02-23 47 views
33

我想要有一個View,它最初是不可見的,當我按下按鈕時,它在動畫淡入淡出時變爲可見。我正在使用AlphaAnimation來消除褪色效果。問題是,如果我使視圖不可見,則無法看到動畫。在動畫中使用淡入淡出的視圖

非常感謝,

的Gratzi

回答

25

提供一個AnimationListener的動畫,並儘快動畫開始使視圖可見。

http://developer.android.com/reference/android/view/animation/Animation.AnimationListener.html

+3

非常感謝,男士!問題在於如果視圖不可見,則不執行應用程序,因此onStartAnimation方法無法使用。但是在開始動畫之前,我已經在按鈕的偵聽器中設置了視圖,並且我將視圖設置爲在onEndAnimation中不可見。 – Gratzi

+0

我不明白你爲什麼在onEndAnimation中將動畫設置爲不可見,在你最初的問題中你說你希望它淡入並變得可見,爲什麼你在onEndAnimation中設置爲不可見? – Ixx

125

假設你有一個ImageView名爲imageView和動畫文件your_fade_in_anim.xml你的資源內\動畫\文件夾:

ImageView imageView = (ImageView) findViewById(R.id.imageView); 
Animation fadeInAnimation = AnimationUtils.loadAnimation(this, R.anim.your_fade_in_anim); 
// Now Set your animation 
imageView.startAnimation(fadeInAnimation); 

你的XML

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="[duration (in milliseconds)]" 
     android:repeatCount="infinite" /> 
</set> 

更換支架與您的實際持續時間。

+10

這是如何解決最初看不見的問題的? – Ixx

+4

爲什麼這個答案有這麼多upvotes?它甚至不回答這個問題。 –

+47

儘管它沒有回答正文中的問題,但它回答了「我如何淡入視圖」這個問題的標題。因此,我想很多人在尋找如何做動畫的同時找到了這個答案(就像我一樣)。雖然不是嚴格的答案,但它絕對有用。 – karl

3

而不是無限重複計數和隱藏/查看您的視圖,我建議只是不重複動畫,並開始以alpha通道設置爲最大。然後你可以使用:

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 
    <alpha 
     android:fromAlpha="0.0" 
     android:toAlpha="1.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:duration="[duration (in milliseconds)]" 
     android:repeatCount="0" /> 
</set> 

而你完成了。不需要聽衆,隱藏或顯示。就像一樣簡單。