您的位置:首页 > 运维架构

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);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: