Backlight87
8/29/2017 - 3:53 PM

从下往上的动画-一般用在alertdialog 或者fragmentdialog或者 popwindow 一般是通过这些对象,获取到对应的额window,对于window设置动画。 关于代码的备注: 2. 该style 指定了 窗体(windows)进入的动画(dialog_en

从下往上的动画-一般用在alertdialog 或者fragmentdialog或者 popwindow 一般是通过这些对象,获取到对应的额window,对于window设置动画。 关于代码的备注:

  1. 该style 指定了 窗体(windows)进入的动画(dialog_enter) 和离开的动画 (dialog_exit)

  2. 在进入时的动画dialog_enter 中,写了一个 translate 的变化,指定从 其父容器的 100% 位置开始。 其父容器的 100% 位置 是 屏幕以外的位置,是看不到,这是一个开始点。没有指定结束点,结束点就默认 本身应该显示的位置(即将显示的位置)。

4.同理,dialog_exit定义了离开时动画。该动画未指定开始位置,指定了结束位置是 其父容器的 100% 位置 ,这样就慢慢的向下消失在屏幕以外。 android:toYDelta="100%p" 中的 100% 指示了 其父容器的 100% 位置 而如果写成 android:toYDelta="100%",即是指示了 起自身的 100% 位置。


AlertDialog alertDialog=new AlertDialog.Builder(MainActivity.this).setTitle("我是带有动画的dialog").create();
                Window window=alertDialog.getWindow();
                window.setGravity(Gravity.BOTTOM);
                window.setWindowAnimations(R.style.mystyle);
                alertDialog.show();
                

//对应的style
<style name="mystyle" parent="android:Animation">
        <item name="@android:windowEnterAnimation">@anim/dialog_enter</item>
        <item name="@android:windowExitAnimation">@anim/dialog_exit</item>
</style>



//在resource下新建anim文件夹然后建立两个动画要用的xml文件
dialog_enter.xml

<?xml version="1.0" encoding="utf-8"?>

    <set xmlns:android="http://schemas.android.com/apk/res/android" >

        <translate
            android:duration="600"
            android:fromYDelta="100%p" />

    </set>
dialog_exit.xml

<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android" >

    <translate
        android:duration="600"
        android:toYDelta="100%p" />

</set>