PopupWindow动画无法正常工作

时间:2011-09-15 22:42:27

标签: android android-animation

我有一个很好的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 / anim /似乎:

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

也不是res / anim /消失:

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

任何线索?

1 个答案:

答案 0 :(得分:50)

实际上,PopupWindow.setAnimationStyle需要一个包含2个条目的样式。你需要有两个xmls,每个包含一个<set>,一个用于显示,另一个用于隐藏窗口。完成后,将以下部分放入values / 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。所以这个答案会相应更新。

相关问题