自定义Android中Dialog的弹出动画

在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的显示动画

然后在运行代码,就会出现如上图所示的样式了


猜你喜欢

转载自blog.csdn.net/u014697083/article/details/53064290