美文网首页Android面试必备我收藏的Android开发文章Android开发
CustomDialog——一个多功能、通用、可自定义的Dial

CustomDialog——一个多功能、通用、可自定义的Dial

作者: SiberianDante | 来源:发表于2017-09-19 16:04 被阅读184次

CustomDialog

一个万能的通用支持多功能的Dialog

dialog.gif

依赖

compile 'com.github.SiberiaDante:CustomDialog:v1.0.1'

说明

CustomDialog

一个万能的通用支持多功能的Dialog,简单三步即可实现

  • 只需要传入自定义的CustomDialog布局和需要设置点击事件的控件的id即可
    CustomDialog customDialog=new CustomDialog(this,
                                    R.layout.dialog_layout,
                                    new int[]{R.id.dialog_sure});
  • CustomDialog按钮的监听
    customDialog.setOnDialogItemClickListener(new CustomDialog.OnCustomDialogItemClickListener() {
            @Override
            public void OnCustomDialogItemClick(CustomDialog dialog, View view) {
                Toast.makeText(MainActivity.this, "确定按钮被点击了", Toast.LENGTH_LONG).show();
            }
        });
  • CustomDialog显示与隐藏

    customDialog.show();

    customDialog.dismiss();

如果你想改变CustomDialog的显示位置、动画、控制按钮点击是否取消显示CustomDialog,可以使用一下构造

  • 改变CustomDialog动画
    /**
     * @param context
     * @param layoutResID    自己定义的布局
     * @param listenedItems  需要设置点击事件的资源id
     * @param animationResId dialog 动画,如果不使用自己的,则传0
     */
    public CustomDialog(Context context, int layoutResID, int[] listenedItems, int animationResId) {
        super(context, R.style.Custom_Dialog_Style); //dialog的样式
        this.context = context;
        this.mLayoutResId = layoutResID;
        this.mListenedItems = listenedItems;
        this.mAnimationResId = animationResId;
    }
  • 控制点击CustomDialog后是否自动取消显示CustomDialog
    /**
     * @param context
     * @param layoutResID   自己定义的布局
     * @param listenedItems 需要设置点击事件的资源id
     * @param isDismiss     按钮点击后是否默认取消dialog {@code true}取消 {@code false} 不取消
     */
    public CustomDialog(Context context, int layoutResID, int[] listenedItems, boolean isDismiss) {
        super(context, R.style.Custom_Dialog_Style); //dialog的样式
        this.context = context;
        this.mLayoutResId = layoutResID;
        this.mListenedItems = listenedItems;
        this.mIsDismiss = isDismiss;
    }
  • 改变CustomDialog的显示位置,同时可以控制点击CustomDialog后是否自动取消显示CustomDialog
    /**
     * @param context
     * @param layoutResID   自己定义的布局
     * @param listenedItems 需要设置点击事件的资源id
     * @param isDismiss     按钮点击后是否默认取消dialog {@code true}取消 {@code false} 不取消
     * @param position      dialog 显示位置,默认CENTER,不设置时可以传0
     */
    public CustomDialog(Context context, int layoutResID, int[] listenedItems, boolean isDismiss, int position) {
        super(context, R.style.Custom_Dialog_Style); //dialog的样式
        this.context = context;
        this.mLayoutResId = layoutResID;
        this.mListenedItems = listenedItems;
        this.mPosition = position;
    }
  • 可以同时改变CustomDialog动画、显示位置、按钮点击是否取消显示CustomDialog
    /**
     * 满足你各种需求
     *
     * @param context
     * @param layoutResID    自己定义的布局
     * @param listenedItems  需要设置点击事件的资源id
     * @param animationResId dialog 动画,如果不使用自己的,则传0
     * @param isDismiss      按钮点击后是否默认取消dialog {@code true}取消 {@code false} 不取消
     * @param position       dialog 显示位置,默认CENTER,不设置时可以传0
     */
    public CustomDialog(Context context, int layoutResID, int[] listenedItems, int animationResId, boolean isDismiss, int position) {
        super(context, R.style.Custom_Dialog_Style); //dialog的样式
        this.context = context;
        this.mLayoutResId = layoutResID;
        this.mListenedItems = listenedItems;
        this.mAnimationResId = animationResId;
        this.mIsDismiss = isDismiss;
        this.mPosition = position;
    }

其他几个常用Dialog

EnsureDialog ensureDialog = new EnsureDialog(this).builder()
                .setGravity(Gravity.CENTER)//默认居中,可以不设置
                .setTitle("这里是一个标题", getResources().getColor(R.color.black))//可以不设置标题颜色,默认系统颜色
                .setCancelable(false)
                .setSubTitle("这是一个副标题")
                .setIncon(R.mipmap.tip_icon)//不设置图标,默认没有图标
                .setNegativeButton("取消", new View.OnClickListener() {//可以选择设置颜色和不设置颜色两个方法
                    @Override
                    public void onClick(View view) {

                    }
                })
                .setPositiveButton("确认", getResources().getColor(R.color.red), new View.OnClickListener() {//可以选择设置颜色和不设置颜色两个方法
                    @Override
                    public void onClick(View view) {
                        ensureDialog.dismiss();

                    }
                });
        ensureDialog.show();
new BottomPopupWindow(this).builder()
                .setTitle("选择").setCancelable(false).setCanceled(true)
                .addSheetItem("相机", BottomPopupWindow.SheetItemColor.Blue, new BottomPopupWindow.OnSheetItemClickListener() {
                    @Override
                    public void onClick(int which) {
                    }
                })
                ...//可以addSheetItem多个item
                .addSheetItem("相册", BottomPopupWindow.SheetItemColor.Blue, new BottomPopupWindow.OnSheetItemClickListener() {
                    @Override
                    public void onClick(int which) {
                    }
                }).show();
  final EditDialog dialog = new EditDialog(this).builder();
        dialog.setTitle("可编辑Dialog");
        dialog.setCancelable(false);
        dialog.setNegativeButton("取消", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
            }
        });
        dialog.setPositiveButton("确定", new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final String msg = dialog.getMsg();
                Toast.makeText(MainActivity.this, "输入内容为:" + msg, Toast.LENGTH_LONG).show();
                dialog.dismiss();
            }
        });
        dialog.show();

堆码不易,star支持,万分感谢:

TitleLayout——一个轻松实现标题栏的

Android开发常备工具整理中

博客园:http://www.cnblogs.com/shen-hua/

Github 地址:https://github.com/SiberiaDante/CustomDialog

相关文章

网友评论

    本文标题:CustomDialog——一个多功能、通用、可自定义的Dial

    本文链接:https://www.haomeiwen.com/subject/qkowsxtx.html