###前言
在我们项目的进行中不可避免的会用到弹框的使用,我们也经常的使用dialog相关知识来创建一个弹出框,但今天我要讲解的是用DialogFragment的方式来快速创建一个简约风格的弹出框,它相较于dialog来创建弹出框的优势在:
dialog在关闭的时候,容易发生内存泄漏,而dialogFragment是和activity的生命周期绑定的,dialogFragment自身对内存做了些处理,它不仅具备dialog功能,还避免了内存的泄露,特别是在手机进行横竖屏切换的时候
下面我就来讲讲DialogFragment创建dialog相关的知识。
### 程序实现
#####一.dialogFragment创建dialog的方式
dialogFragment创建dialog的方式有两种:
1. 通过重写 onCreateDialog(Bundle savedInstanceState) 方法创建默认dialogFragment
2. 通过重写 onCreateView 方法来自定义dialogFragment
由于今天讲解的是通过快速的方式创建dialog,就讲解第一种方式
具体思路是写一个类去继承AppCompaDialogFragment,然后重写onCreateDialog方法来实现dialog的创建
然后我自己新建了一个DefaultDialogFragment对默认DialogFragment进行了封装,下面就来讲讲DefaultDialogFragment的具体使用。
#####一.DefaultDialogFragment初始化
private DefaultDialogFragment mDefaultDialogFragment;
mDefaultDialogFragment=new DefaultDialogFragment();
#####二.DefaultDialogFragment设置标题
setTitle(String title)
#####三.DefaultDialogFragment设置标题
setMessage(String message)
#####四.DefaultDialogFragment设置是否可按返回键消失
默认为true,即点击返回键会消失
setCancel(boolean canDismiss)
#####五.设置是否可点击屏幕dialog外部区域消失
默认为true,即点击屏幕dialog外部区域会消失
setCancelOnTouchOutside(boolean canDismiss)
#####六.设置dialog背景色
setBackGround(int rid)
#####七.监听确认点击事件
setPositiveListener(String positiveText, DialogInterface.OnClickListener onClickListener)
#####八.监听取消点击事件
setNegativeListener(String negativeText, DialogInterface.OnClickListener onClickListener)
#####九.显示dialogFragemnt
showDialog(FragmentManager fragmentManager)
#####十.dialogFragemnt显示类型
DefaultDialogFragment支持链式调用,如果你想只显示提示语而没有点击事件(即没有确认和取消按钮),你可以这样调用:
mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.showDialog(getSupportFragmentManager());//显示dialog
只包含一个确认按钮,你可以这样调用:
mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是带确认按钮提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.setPositiveListener("确定",new DialogInterface.OnClickListener(){//设置确定按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"确定");
.showDialog(getSupportFragmentManager());//显示dialog
只包含一个取消按钮,你可以这样调用:
mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是带取消按钮提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.setNegativeListener("取消", new DialogInterface.OnClickListener() {//设置取消按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"取消");
.showDialog(getSupportFragmentManager());//显示dialog
dialog中既有确认按钮也有取消按钮,你可以这样调用:
mDefaultDialogFragment=new DefaultDialogFragment();
mDefaultDialogFragment.setTitle("提示")//设置标题
.setMessage("我是两个按钮均有的提示框")//设置提示语
.setCancel(true)//设置是否可按返回键消失
.setCancelOnTouchOutside(true)//设置是否可点击屏幕dialog外部区域消失
.setBackGround(R.color.color_f66f6f)//设置dialog背景色
.setPositiveListener("确定",new DialogInterface.OnClickListener(){//设置确定按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"确定");
.setNegativeListener("取消", new DialogInterface.OnClickListener() {//设置取消按钮事件
@Override
public void onClick(DialogInterface dialog, int which) {
ToastUtil.showShortToast(MainActivity.this,"取消");
.showDialog(getSupportFragmentManager());//显示dialog
##### dialogFragemnt运行效果图

##### dialogFragemnt项目结构图

服务描述:
微信加我验证时说明是:来自demo大师求助
服务范围:辅助将你有疑问的一个例子运行起来,并对该例子做技术方便的解答,服务时间为2天内,若需要其他特别需求或对从我这里下载的其他例子做解答价格另议
服务价格:
¥50