一、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);
}