Android popupwindow动画的使用

来源:互联网 发布:软件架构怎么做 编辑:程序博客网 时间:2024/06/02 06:25

要实现背景虚化的对话框,有三种方式:PopupWindow,DialogFragment 和 Activity。现在先说说PopuWindow的出现和消失的动画设置。

文章参考:Android之Animation动画的使用(一)

PopupWindow的进入效果和退出效果,用到style样式。PopupWindow中没有setAnimation方法,只能通过popWindow.setAnimationStyle(R.style.showPopupAnimation)来设置。比如,设置弹出框显示后需要消失,这个设置动画直接是使用xml文件,不需要代码的,这里以透明效果为例,当然做复合效果也行:

首先,anim文件夹下的代码:alpha_in.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <!-- 持续时间 -->  
  4.     <alpha android:duration="1000" >  
  5.         <!-- 开始显示时的透明度 -->  
  6.         android:fromAlpha="0.0"   
  7.         <!-- 最后显示的透明度 -->  
  8.         android:toAlpha="1.0"   
  9.         />   
  10. </alpha>  
  11. </set>  
alpha_exit.xml

[html] view plaincopy
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  3.     <alpha  
  4.         android:duration="1000"  
  5.         android:fromAlpha="1.0"  
  6.         android:toAlpha="0.0" />  
  7.      
  8. </set>  
上面的两段代码分别是进入和退出的动画效果。

其次,【注意】最重要的是在values文件夹下的styles.xml中进行配置:



配置的代码为:添加下面一段代码即可:

[html] view plaincopy
  1. <style name="showPopupAnimation" parent="android:Animation">  <!--name为调用这个style动画的名字,自己设置的-->  
  2.        <item name="android:windowExitAnimation">@anim/alpha_exit</item><!-- 退出动画-->  
  3.        <item name="android:windowEnterAnimation">@anim/alpha_in</item><!--- 进入动画->  
  4. </style>  

最后,再调用这个style即可

[java] view plaincopy
  1. public void pop(){  
  2.         View view = getLayoutInflater().inflate(R.layout.view, null);  
  3.         PopupWindow popWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, true);        
  4.         popWindow.setOutsideTouchable(true);  
  5.         popWindow.setBackgroundDrawable(new BitmapDrawable());  
  6.         popWindow.setAnimationStyle(R.style.showPopupAnimation);  
  7.         popWindow.showAtLocation(view, Gravity.CENTER, 00);  
  8.     }  
原创粉丝点击