2011-09-15 4 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="0" 
android:toYDelta="100%" 
android:duration="1000" 
/> 

どれ手がかり:

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

NOR RES /アニメーション/消えるため

答えて

49

実際には、PopupWindow.setAnimationStyleは2つのエントリを持つスタイルを想定しています。 2つのxmlが必要です。それぞれのxmlには<set>が含まれています.1つは表示用、もう1つはウィンドウを非表示にします。

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

R.style.AnimationPopupにアニメーションのスタイルを設定します。これが行われると、値/のstyles.xmlに次の曲を入れました。そうするだろう。

私はこの情報をhttps://github.com/lorensiuswlt/NewQuickAction3Dから得ていますが、ドキュメントには言及していないようです。

更新:

のAndroid SDKのアップデートは2012年にXML構文を変更しました。元の@android:windowEnterAnimationandroid:windowEnterAnimationになりました。したがって、この回答はそれに応じて更新されます。

+0

ありがとうございます!私はこれを試してみます – slipbull

+0

ありがとう!あなたの提案は私のために働いた。 – kgiannakakis

+2

これがあなたを助けてくれたらこれを答えとして受け入れてください。他の誰かが簡単にこれが動作することを知ることができます。 –

関連する問題