本文是基于AlertDialog实现的效果,主要的实现代码就是dialog.getWindow(),然后在得到的Window中setWindowAnimations.在这里就可以设置dialog的显示动画,具体实现代码如下
AlertDialog d =new AlertDialog.Builder(this).create();
d.show();
Window window = d.getWindow();
window.setContentView(R.layout.view);//这里的layout自己随意写
window.setlayout(w,h);//高度和宽度自己指定,可根据屏幕大小
window.setGravity(Gravity.BOTTOM);
window.setWindowAnimations(R.style.myanim);
<style name="myanim" parent="android:Animation">
<item name="@android:windowEnterAnimation">@anim/in</item>
<item name="@android:windowExitAnimation">@anim/out</item>
</style>
in.xml中设置的动画为
<translate
android:fromYDelate="100%p"
android:duration="200"/>
out.xml则为
<translate
android:toYDelate="100%p"
android:duration="200"/>
android:fromYDelate
android:toYDelate
这两个的意思大家应该没有什么问题,主要是其中的属性值,%p的意思是相对于parent的百分之几。上面的in.xml其实是省略了一个属性,写全的话如下
<translate
android:fromYDelate="100%p"
android:toYDelate="0%p"
android:duration="200"/>
out.xml同理
<translate
android:fromYDelate="0%p"
android:toYDelate="100%p"
android:duration="200"/>

这样就基本模仿出了微信退出对话框从屏幕下滑出的效果。。。