Android3.0推出了DialogFragment(基于Fragment的Dialog),用来代替Dialog。
DialogFragment相对于Dialog有一个好处就是能进行状态的保存恢复。
DialogFragment:API简介
Dialog onCreateDialog():重写这个方法实现自定义Dialog布局,一般用来创建系统的Dialog
show(FragmentManager manager , String tag);//展示dialog,添加Dialog到对应的Manager中。
show(FragmentTransication transication, String Tag);//
dismiss();//隐藏dialog
Dialog getDialog();//返回当前Dialog
Dialog属性:
<style name="Dialog.NoTitle" parent="Theme.AppCompat.Dialog"> <item name="android:windowNoTitle">true</item> <item name="android:windowFullscreen">true</item> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowAnimationStyle">@style/AnimationPicker</item></style><style name="AnimationPicker" mce_bogus="1" parent="android:Animation"> <item name="android:windowEnterAnimation">@anim/slide_in_bottom</item> <item name="android:windowExitAnimation">@anim/slide_out_bottom</item></style>
slide_in_bottom.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" android:interpolator="@android:anim/decelerate_interpolator" android:shareInterpolator="false"> <alpha android:fromAlpha="0.0" android:toAlpha="1.0"/> <translate android:fromXDelta="0%" android:fromYDelta="100%" android:toXDelta="0%" android:toYDelta="0%"/></set>
slide_out_bottom.xml
<?xml version="1.0" encoding="utf-8"?><set xmlns:android="http://schemas.android.com/apk/res/android" android:duration="@android:integer/config_mediumAnimTime" android:interpolator="@android:anim/decelerate_interpolator" android:shareInterpolator="false"> <alpha android:fromAlpha="1.0" android:toAlpha="0.5"/> <translate android:fromXDelta="0%" android:fromYDelta="0%" android:toXDelta="0%" android:toYDelta="100%"/></set>
可以通过两种方法来创建我们的·Dialog
- 重写OnCreateView返回布局
setStyle(int style,int theme);设置属性
setCancle()设置点击空白和返回键是否可以取消dialog
- 重写onCreateDialog()返回一个Dialog
(注意两种方法不能同时使用。先执行onCreateDialog()后执行onCreateView())
FragmentDialog和Activity进行通信:通过接口,定义一个接口让Activity强制去执行这个接口,然后在DialogFragment中就可以去调用这个方法。
onCreate()中可以调用这句话隐藏掉软键盘
activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
设置让DialogFragment中的布局全屏的方法:

setStyle(DialogFragment.STYLE_NORMAL, android.R.style.Theme_Black_NoTitleBar);
网友评论