AlertDialog为什么要Buider呢?直接构造如何不成功?
一:AlertDialog与AlertDialog.Builder
AlertDialog是Dialog的一个直接子类,最常用的对话框之一,注意不能直接用构造函数 AlertDialog alertDialog = new AlertDialog(mContent)来得到一个AlertDialog;
AlertDialog.Builder才是得到AlertDialog的唯一方式:AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
很多人会为了dialog出现后,点击空白处或者按返回键的控制处理烦恼,以下方法能很好地帮助到你:
二:AlertDialog.Builder的setCancelable
alertDialog.setCancelable(true/false); //设置为false,按返回键不能退出,默认为true。
三:AlertDialog.Builder的setCanceledOnTouchOutside
alertDialog.setCanceledOnTouchOutside(true/false); // 设置为false则dialog弹出后会点击屏幕,dialog不消失;点击物理返回键dialog消失。
PS:附送dialog从下慢慢上升进入及慢慢落下退出的动画效果实现代码:
dialog = new Dialog(context, R.style.ActionSheetDialogStyle);
<style name="ActionSheetDialogStyle" parent="@android:style/Theme.Dialog"> <!-- Dialog进入及退出动画 --> <item name="android:windowAnimationStyle">@style/ActionSheetDialogAnimation</item> </style>
<style name="ActionSheetDialogAnimation" parent="@android:style/Animation.Dialog"> <item name="android:windowEnterAnimation">@anim/actionsheet_dialog_in</item> <item name="android:windowExitAnimation">@anim/actionsheet_dialog_out</item> </style>
<!--actionsheet_dialog_in-->
<translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromYDelta="100%" android:toYDelta="0" /><!--actionsheet_dialog_out--><translate xmlns:android="http://schemas.android.com/apk/res/android" android:duration="300" android:fromYDelta="0" android:toYDelta="100%" />