Android 为PopupWindow设置动画效果

时间:2023-10-10 18:15:56
首先定义显示效果的动画文件:
  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate
  4. android:fromXDelta="0"
  5. android:toXDelta="0"
  6. android:fromYDelta="120"
  7. android:toYDelta="0"
  8. android:duration="500" />
  9. </set>

然后定义消失效果的动画文件:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <set xmlns:android="http://schemas.android.com/apk/res/android">
  3. <translate
  4. android:fromXDelta="0"
  5. android:toXDelta="0"
  6. android:fromYDelta="0"
  7. android:toYDelta="120"
  8. android:duration="500" />
  9. </set>

PopupWindow的动画显示效果是通过setAnimationStyle(int id)方法设置的,其中id为一个style的id,所以我们要在styles.xml文件中设置一个动画样式:

  1. <style name="popwin_anim_style">
  2. <item name="android:windowEnterAnimation">@anim/menushow</item>
  3. <item name="android:windowExitAnimation">@anim/menuhide</item>
  4. </style>

然后在程序中为PopupWindow设置就成:

  1. PopupWindow pop = new PopupWindow(view, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
  2. pop.setAnimationStyle(R.style.popwin_anim_style);