自定义Dialog
应用场景:自定义Dialog
效果图:
1.创建Dialog对象
代码如下:
Dialog dialog = new Dialog(CustomDialogActivity.this, R.style.CustomDialog);
注:
创建Dialog对象时,需传入两个参数:
第一个参数是:Activity对象;
第二个参数是:自定义的对话框style,它指向的是values文件夹下styles.xml文件中的如下代码:
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- 自定义Dialog --> <style name="CustomDialog" parent="@android:Theme.Dialog"> <!--windowFrame框为无 --> <item name="android:windowFrame">@null</item> <!-- 没有标题栏 --> <item name="android:windowNoTitle">true</item> <!-- 除去背景 --> <item name="android:windowBackground">@null</item> <!--是否浮现在activity之上 --> <item name="android:windowIsFloating">true</item> <!-- 是否半透明 --> <item name="android:windowIsTranslucent">false</item> <!-- 去掉覆盖层 --> <item name="android:windowContentOverlay">@null</item> <!-- 设置背景颜色 --> <item name="android:background">#262626</item> </style> </resources>
2.在layout文件夹下创建dialog_view.xml文件
代码如下:
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="#000000"> <TextView android:id="@+id/promptTv" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginTop="15.0dip" android:gravity="center" android:textSize="16.0sp" android:textColor="#FFFFFF" android:text="@string/promptText"/> <LinearLayout android:orientation="horizontal" android:layout_width="fill_parent" android:layout_height="wrap_content" android:paddingTop="20.0dip" android:paddingBottom="20.0dip" android:gravity="center"> <Button android:id="@+id/dialog_positive_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ok"/> <Button android:id="@+id/dialog_negative_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/cancel"/> </LinearLayout> </LinearLayout>
注:然后,将布局文件设置到Dialog。
代码如下:
dialog.setContentView(R.layout.dialog_view);// 为对话框设置自定义布局
3.对Window对象进行自定义设置
代码如下:
Window window = dialog.getWindow();// 获取Window对象 window.setGravity(Gravity.CENTER);// 居中显示 window.setWindowAnimations(R.style.dialogWindowAnim); // 设置窗口动画 window.setLayout(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
注:对话框动画实现代码如下(代码在values文件夹下styles.xml文件中):
<?xml version="1.0" encoding="utf-8"?> <resources> <!-- Dialog动画 --> <style name="dialogWindowAnim" parent="android:Animation"> <!-- 进入时的动画 --> <item name="android:windowEnterAnimation">@anim/dialog_enter_anim</item> <!-- 退出时的动画 --> <item name="android:windowExitAnimation">@anim/dialog_exit_anim</item> </style> </resources>
4.最后调用show方法显示Dialog。
代码如下:
dialog.show();