一、Dialog的进出动画
1、res下建立anim的文件夹,创建dialog_in
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
>
<scale
android:fromXScale="0%"
android:fromYScale="0%"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="100%"
android:toYScale="100%"/>
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
/>
</set>
创建dialog_out如下
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android"
android:duration="500"
>
<scale
android:fromXScale="100%"
android:fromYScale="100%"
android:pivotX="50%"
android:pivotY="50%"
android:toXScale="0%"
android:toYScale="0%"/>
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
/>
</set>
2、在res/values的styles设置style
<style name="Dialog_Anim_Style" parent="android:Animation"> //注意parent
<item name="@android:windowEnterAnimation">@anim/dialog_in</item>
<item name="@android:windowExitAnimation">@anim/dialog_out</item>
</style>
3、Dialog
private AlertDialog.Builder dialogBuilder;
private AlertDialog dialog;
private void showCarTypeDialog(){ if(dialogBuilder == null){ dialogBuilder = new AlertDialog.Builder(getActivity()); } final View dialogView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog,null); dialogBuilder.setView(dialogView); dialog = dialogBuilder.create(); dialog.show(); dialog.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss(DialogInterface dialog) { } }); //此处设置位置窗体大小 Window window = dialog.getWindow(); window.setWindowAnimations(R.style.Dialog_Anim_Style); window.setLayout(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT); window.setGravity(Gravity.START|Gravity.TOP); WindowManager.LayoutParams lp = window.getAttributes(); lp.x = 3; // 新位置X坐标 lp.y = 0; // 新位置Y坐标 lp.width = 760; // 宽度 lp.height = 487; // 高度 lp.alpha = 1.0f; // 透明度 window.setAttributes(lp); }