PopupWindow动画无法正常工作

sli*_*ull 11 android android-animation

我有一个很好的PopupWindow,我想用动画出现.我是这样做的:

popup.setAnimationStyle(R.anim.appear);
popup.showAtLocation(popupMenuLayout, gravity, offsetX, offsetY);
Run Code Online (Sandbox Code Playgroud)

然后我设置了一个用于更改动画的监听器:

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

但是,嘿,它不会起作用.res/anim /似乎都没有:

<translate xmlns:android="http://schemas.android.com/apk/res/android"
 android:fromYDelta="100%"
 android:toYDelta="0"
 android:duration="1000" 
/>
Run Code Online (Sandbox Code Playgroud)

也不是res/anim /消失:

<translate xmlns:android="http://schemas.android.com/apk/res/android"
 android:fromYDelta="0"
 android:toYDelta="100%"
 android:duration="1000"
/>
Run Code Online (Sandbox Code Playgroud)

有线索吗?

He *_*ing 51

实际上,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>
Run Code Online (Sandbox Code Playgroud)

并将您的动画样式设置为R.style.AnimationPopup.那就行了.

我从https://github.com/lorensiuswlt/NewQuickAction3D获得了这些信息,文档似乎没有提到它.

更新:

2012年Android SDK的更新改变了XML语法.原来@android:windowEnterAnimation现在变成了android:windowEnterAnimation.所以这个答案会相应更新.

  • 如果能帮助你,那么接受这个作为答案呢?这样其他人就可以很容易地知道这是有效的. (2认同)