DialogFragment创建默认dialog

代码地址如下:
http://www.demodashi.com/demo/12228.html

记得把这几点描述好咯:代码实现过程 + 项目文件结构截图 + 演示效果

前言

在我们项目的进行中不可避免的会用到弹框的使用,我们也经常的使用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项目结构图

DialogFragment创建默认dialog

代码地址如下:
http://www.demodashi.com/demo/12228.html

注:本文著作权归作者,由demo大师代发,拒绝转载,转载需要作者授权

posted on 2018-03-06 09:47  demo例子集  阅读(163)  评论(0编辑  收藏  举报

导航