1.在res目录下创建一个anim目录
2.新建一个enter_anim.xml文件,这为对话框进入时的动画
<?xml version="1.0" encoding="utf-8"?>
<!--
开始动画
android:fromYDelta="-100%": 重手机的头部开始
android:duration = "200": 设置执行的时间
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="-100%"
android:duration = "200">
</translate>
3.新建一个exit_anim.xml文件,这为对话框退出时的动画
<?xml version="1.0" encoding="utf-8"?>
<!--
退出动画
android:fromYDelta="0%": 从手机的中部开始
android:toYDelta="100%":到时手机的底部结束
android:duration = "200":执行的时间为毫秒
-->
<translate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromYDelta="0%"
android:toYDelta="100%"
android:duration = "200">
</translate>
4.在value目录下的style文件中加入
<!-- 自定义对话框的进入和退出动画 -->
<style name="dialogStyle" parent="android:Animation">
<item name="android:windowEnterAnimation">@anim/dialog_enter</item>
<item name="android:windowExitAnimation">@anim/dialog_exit</item>
</style>
5.在程序中写入
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK){
//创建一个对话框
al = new AlertDialog.Builder(this).create();
//设置对话框显示
al.show();
//把这个对话框的窗口得到
window = al.getWindow();
//设置显示的位置为居中显示
window.setGravity(Gravity.CENTER);
//设置对话框的动画样式
window.setWindowAnimations(R.style.dialogStyle);
//设置对话框的layout文件
window.setContentView(R.layout.dialog_layout);
//找到对应的按键
queding = window.findViewById(R.id.bt_queding);
cancel = window.findViewById(R.id.bt_cancel);
//调用定义的按键事件监听方法
initEvent();
}
return super.onKeyDown(keyCode, event);
}