PopupWindow的进入和退出的动画效果设置
2015-08-27 01:22
387 查看
要实现背景虚化的对话框,有三种方式:PopupWindow,DialogFragment 和 Activity。现在先说说PopuWindow的出现和消失的动画设置。
文章参考:Android之Animation动画的使用(一)
PopupWindow的进入效果和退出效果,用到style样式。PopupWindow中没有setAnimation方法,只能通过popWindow.setAnimationStyle(R.style.showPopupAnimation)来设置。比如,设置弹出框显示后需要消失,这个设置动画直接是使用xml文件,不需要代码的,这里以透明效果为例,当然做复合效果也行:
首先,anim文件夹下的代码:alpha_in.xml
[html] view
plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 持续时间 -->
<alpha android:duration="1000" >
<!-- 开始显示时的透明度 -->
android:fromAlpha="0.0"
<!-- 最后显示的透明度 -->
android:toAlpha="1.0"
/>
</alpha>
</set>
alpha_exit.xml
[html] view
plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="1000"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
上面的两段代码分别是进入和退出的动画效果。
其次,【注意】最重要的是在values文件夹下的styles.xml中进行配置:
配置的代码为:添加下面一段代码即可:
[html] view
plaincopyprint?
<style name="showPopupAnimation" parent="android:Animation"> <!--name为调用这个style动画的名字,自己设置的-->
<item name="android:windowExitAnimation">@anim/alpha_exit</item><!-- 退出动画-->
<item name="android:windowEnterAnimation">@anim/alpha_in</item><!--- 进入动画->
</style>
最后,再调用这个style即可
[java] view
plaincopyprint?
public void pop(){
View view = getLayoutInflater().inflate(R.layout.view, null);
PopupWindow popWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, true);
popWindow.setOutsideTouchable(true);
popWindow.setBackgroundDrawable(new BitmapDrawable());
popWindow.setAnimationStyle(R.style.showPopupAnimation);
popWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
}
文章参考:Android之Animation动画的使用(一)
PopupWindow的进入效果和退出效果,用到style样式。PopupWindow中没有setAnimation方法,只能通过popWindow.setAnimationStyle(R.style.showPopupAnimation)来设置。比如,设置弹出框显示后需要消失,这个设置动画直接是使用xml文件,不需要代码的,这里以透明效果为例,当然做复合效果也行:
首先,anim文件夹下的代码:alpha_in.xml
[html] view
plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<!-- 持续时间 -->
<alpha android:duration="1000" >
<!-- 开始显示时的透明度 -->
android:fromAlpha="0.0"
<!-- 最后显示的透明度 -->
android:toAlpha="1.0"
/>
</alpha>
</set>
alpha_exit.xml
[html] view
plaincopyprint?
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >
<alpha
android:duration="1000"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
上面的两段代码分别是进入和退出的动画效果。
其次,【注意】最重要的是在values文件夹下的styles.xml中进行配置:
配置的代码为:添加下面一段代码即可:
[html] view
plaincopyprint?
<style name="showPopupAnimation" parent="android:Animation"> <!--name为调用这个style动画的名字,自己设置的-->
<item name="android:windowExitAnimation">@anim/alpha_exit</item><!-- 退出动画-->
<item name="android:windowEnterAnimation">@anim/alpha_in</item><!--- 进入动画->
</style>
最后,再调用这个style即可
[java] view
plaincopyprint?
public void pop(){
View view = getLayoutInflater().inflate(R.layout.view, null);
PopupWindow popWindow = new PopupWindow(view, LayoutParams.MATCH_PARENT, LayoutParams.WRAP_CONTENT, true);
popWindow.setOutsideTouchable(true);
popWindow.setBackgroundDrawable(new BitmapDrawable());
popWindow.setAnimationStyle(R.style.showPopupAnimation);
popWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
}
相关文章推荐
- Linux用户管理命令使用之疑问 — useradd <一>
- 20150827_tomcat架构_Server.xml详解
- Linux磁盘与文件系统管理详细总结
- Opengl中矩阵和perspective/ortho的相互转换
- Hadoop(二)——分布式集群搭建
- ubuntu opera31.0安装flash
- 怎么将linux下的项目转换成windows的VS2010下的项目?
- linux和openwrt下更新源
- 将Linux代码移植到Windows的简单方法
- Hadoop之Reduce侧的联结
- shell
- windows下apache搭建php开发环境
- linux日常管理
- linux防火墙
- ecshop模板构建说明
- ECSHOP调用分类文章
- 开发监控云组态软件的组成
- linux内核字节序转换宏
- 在linux下查看内核版本、gcc版本、操作系统多少位等参数
- Nginx Log