2011-09-15 265 views
11

我有一個不錯的PopupWindow,我想用動畫出現。我不喜歡這樣寫道:PopupWindow動畫不起作用

popup.setAnimationStyle(R.anim.appear); 
popup.showAtLocation(popupMenuLayout, gravity, offsetX, offsetY); 

然後我建立了一個偵聽改變動畫:

popup.setOnDismissListener(new PopupWindow.OnDismissListener(){ 
@Override 
public void onDismiss(){ 
    popup.setAnimationStyle(R.anim.disappear); 
}  
}); 

但是,嘿,它不會工作。不論是對於RES /動畫/顯示:

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:fromYDelta="100%" 
android:toYDelta="0" 
android:duration="1000" 
/> 

也爲RES /動畫/消失:

<translate xmlns:android="http://schemas.android.com/apk/res/android" 
android:fromYDelta="0" 
android:toYDelta="100%" 
android:duration="1000" 
/> 

任何線索?

回答

49

實際上,PopupWindow.setAnimationStyle預計有2個條目的樣式。你需要有兩個xml,每個包含一個<set>,一個用於顯示,另一個用於隱藏窗口。當做到這一點,把下面的成片價值觀/ styles.xml:

<style name="AnimationPopup"> 
    <item name="android:windowEnterAnimation">@anim/popup_show</item> 
    <item name="android:windowExitAnimation">@anim/popup_hide</item> 
</style> 

和動畫樣式設置爲R.style.AnimationPopup。那會做。

我從https://github.com/lorensiuswlt/NewQuickAction3D得到了這個信息,這個文檔似乎沒有提到它。

更新:

在2012年到Android SDK的更新已經改變了XML語法。原來的@android:windowEnterAnimation現在變成了android:windowEnterAnimation。所以這個答案會相應更新。

+0

謝謝!我會試試這個 – slipbull

+0

謝謝!你的建議對我有用。 – kgiannakakis

+2

如果它能幫助你,那麼接受這個答案如何。所以別人可以很容易地知道這是有效的。 –