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


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

     依赖

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

     说明
    [CustomDialog]
    一、一个万能的通用支持多功能的Dialog,简单三步即可实现:

    1.只需要传入自定义的CustomDialog布局和需要设置点击事件的控件的id即可

    CustomDialog customDialog=new CustomDialog(this,
              R.layout.dialog_layout,
              new int[]{R.id.dialog_sure});

    2.CustomDialog按钮的监听

    customDialog.setOnDialogItemClickListener(new CustomDialog.OnCustomDialogItemClickListener() {
        @Override
        public void OnCustomDialogItemClick(CustomDialog dialog, View view) {
          switsh(view.getId()){
            case:R.id.dialog_sure:
              Toast.makeText(MainActivity.this, "确定按钮被点击了", Toast.LENGTH_LONG).show();
              break;
          }
        }   });

    3.CustomDialog显示与隐藏

    customDialog.show();
    
    customDialog.dismiss();

    二、如果你想改变CustomDialog的显示位置、动画、控制按钮点击是否取消显示CustomDialog,可以使用以下构造
    1.改变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;
    }

    2. 控制点击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;
    }

    3.改变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;
    }

    4.可以同时改变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,可以直接拿来用,不需要单独写布局

    1.[EnsureDialog]:确认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();

    2.[BottomPopupWindow]:仿IOS底部弹窗Dialog

    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();

    * [EditDialog]:带EditText确认Dialog

    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支持,万分感谢
    欢迎关注:
    Github 地址:https://github.com/SiberiaDante/CustomDialog
    [TitleLayout——一个轻松实现标题栏的]
    [Android开发必备经典收藏集(整理中)]
    [Android开发常备工具整理中]

  • 相关阅读:
    【BZOJ4568】幸运数字(SCOI2016)-树上倍增+异或线性基合并
    【BZOJ2115】XOR(WC2011)-异或线性基+DFS树+贪心
    【HDU3949】XOR-异或线性基
    【BZOJ3105】新Nim游戏(CQOI2013)-博弈论+异或线性基+贪心
    购物单 && 动态规划 && 背包问题
    求int型正整数在内存中存储时1的个数 && int型的数到底最大是多少?
    Eqaulize Prices
    Nearest Interesting Number
    英文句子的逆序
    字符串反转
  • 原文地址:https://www.cnblogs.com/shen-hua/p/7552165.html
Copyright © 2020-2023  润新知