我有一个很好的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"
/>
任何线索?
答案 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
。所以这个答案会相应更新。