在Android开发中需要自定义Dialog,有时候有需要去指定这个dialog的弹出样式,或者是弹出来的动画效果,那这个时候如何去做呢?
下面以一个简单的示例作为介绍,方便以后学习,这个效果是模仿的IOS的弹出和消失效果,下面是效果图:
其实这个动画效果分解开来很简单,就是一个放大缩小的scale动画和透明的alpha动画一起叠加而来的
要做这个很简单,首先要在res目录下新建一个anim的文件,用来存放出现和消失两个动画的xml文件,
1.出现的动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration = "300"
android:fromXScale="1.2"
android:toXScale="1.0"
android:fromYScale="1.2"
android:toYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"/>
<alpha
android:duration="300"
android:fromAlpha="0.0"
android:toAlpha="1.0" />
</set>
2.消失的动画
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<scale
android:duration="300"
android:fromXScale="1.0"
android:fromYScale="1.0"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="1.2"
android:toYScale="1.2" />
<alpha
android:duration="300"
android:fromAlpha="1.0"
android:toAlpha="0.0" />
</set>
在定义好两个动画文件后,接下来的就是需要在style文件中,对这个dialog的style进行定义:
<style name="DialogOutAndInStyle"> <item name="android:windowEnterAnimation">@anim/dialog_in_anim</item> <item name="android:windowExitAnimation">@anim/dialog_out_anim</item> </style>
自定好这个样式后,就可以在dialog显示前进行动画指定了,
mDialog.getWindow().setWindowAnimations(R.style.DialogOutAndInStyle); //设置dialog的显示动画
然后在运行代码,就会出现如上图所示的样式了