从下往上的动画-一般用在alertdialog 或者fragmentdialog或者 popwindow 一般是通过这些对象,获取到对应的额window,对于window设置动画。 关于代码的备注:
该style 指定了 窗体(windows)进入的动画(dialog_enter) 和离开的动画 (dialog_exit)
在进入时的动画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>