# DialogUtil **Repository Path**: andych008/dialog-util ## Basic Information - **Project Name**: DialogUtil - **Description**: 各种功能样式的对话弹窗工具 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 1 - **Created**: 2021-12-22 - **Last Updated**: 2021-12-22 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # DialogUtil material风格,ios风格,自动获取顶层ability,可在任意界面弹出,可在任意线程弹出 - 原项目地址: https://github.com/hss01248/DialogUtil - 原项目基线版本: v2.0.2, sha1: 34257a382a1bbd95932f1d0f31405b51d01af5af # 注意点 * 不要滥用loadingdialog: > 注意使用的场景: ``` 第一此进入页面,用layout内部的loadingview,有很多statelayout框架, 再次刷新,用刷新头显示刷新状态 局部刷新或点击某按钮访问网络,用loading dialog,不影响页面本身状态,类似web中的ajax请求. ``` # 特性 * 安全,**任意线程**均可调用. * 类型丰富,包括常用的ios风格dialog和material design风格的dialog,且按钮和文字样式可便捷地修改 * **自定义view**:可以传入自定义的view,定义好事件,本工具负责安全地显示 * 也可以保留iso样式或material 样式的底部按钮和上方title(可隐藏),中间的view可以完全自定义 * 考虑了显示内容超多时的滑动和与屏幕的间隙. * 也可以设置宽高百分比来**自定义宽高** * 可以关闭默认的阴影背景,从而能使用xml中**自定义的背景**(弹出自定义view的dialog时常用) * 支持国际化 * **智能弹出和隐藏软键盘**.自定义view的dialog只要设置setNeedSoftKeyboard为true,即可自动处理软键盘的弹出和隐藏 * ios样式和material 样式的均**可以在三种状态下显示**: 普通dialog,TYPE_TOAST. * 支持带x的**广告样式**的动画 # 效果图 ![gif](img0/dialogutil.gif) ![ios_loading](img0/ios_loading.jpg) ![progress_c](img0/progress_c.jpg) ![ios_alert](img0/ios_alert.jpg) ![md_alert](img0/md_alert.jpg) ![ios_input](img0/md_input.jpg) ![ios_bottom](img0/ios_bottom.jpg) ![md_multi_choose](img0/md_multi_choose.jpg) ![md_single_choose](img0/md_single_choose.jpg) ![btnsheet-lv](img0/btnsheet-lv.jpg) ![btnsheet-gv](img0/btnsheet-gv.jpg) # useage ## gradle **Step 1.** Add the maven repository to your build file Add it in your root build.gradle at the end of repositories: ``` allprojects { repositories { ... mavenCentral() } } ``` **Step 2.** Add the dependency ``` dependencies {        implementation 'io.github.dzsf:DialogUtil:1.0.0' } ``` ## 初始化 ``` //在Ability的onStart方法里: 传入context StyledDialog.init(this); ``` ## 示例代码(MainAbilitySlice里) ``` //使用默认样式时,无须.setxxx: StyledDialog.buildLoading().show(); //自定义部分样式时: StyledDialog.buildMdAlert("title", msg, new MyDialogListener() { @Override public void onFirst() { showToast("onFirst"); } @Override public void onSecond() { showToast("onSecond"); } @Override public void onThird() { showToast("onThird"); } }) .setBtnSize(20) .setBtnText("i","b","3") .show(); ``` # 相关回调 ## MyDialogListener ``` public abstract void onFirst();//md-确定,ios-第一个 public abstract void onSecond();//md-取消,ios-第二个 public void onThird(){}//md-netural,ios-第三个 public void onCancle(){} /** * 提供给Input的回调 * @param input1 * @param input2 */ public void onGetInput(CharSequence input1,CharSequence input2){ } /** * 提供给MdSingleChoose的回调 * @param chosen * @param chosenTxt */ public void onGetChoose(int chosen,CharSequence chosenTxt){ } /** * 提供给MdMultiChoose的回调 * @param states */ public void onChoosen( List selectedIndex, List selectedStrs,boolean[] states){ } ``` ## MyItemDialogListener ``` /** * IosSingleChoose,BottomItemDialog的点击条目回调 * @param text * @param position */ public abstract void onItemClick(CharSequence text, int position); /** * BottomItemDialog的底部按钮(经常是取消)的点击回调 */ public void onBottomBtnClick(){} ``` # 提供的api ### 各类dialog的初始参数传递和回调:StyledDialog.buildxxx: ![methodsofstyledialog](img0/methodsofstyledialog.jpg) ## 自定义样式:setXxx ![methodsofconfig](img0/methodsofconfig.jpg) ## 最后必须调用show(),返回dialog对象 # 对话框的消失 ``` StyledDialog.dismiss(DialogInterface... dialogs); ``` ## 两个loading对话框不需要对象就可以直接dismisss: ``` StyledDialog.dismissLoading(); ``` ### progress dialog 的进度更新 ``` /** * 可以在任何线程调用 * @param dialog 传入show方法返回的对象 * @param progress * @param max * @param msg 如果是转圈圈,会将msg变成msg:78%的形式.如果是水平,msg不起作用 * @param isHorizontal 是水平线状,还是转圈圈 */ public static void updateProgress( Dialog dialog, int progress, int max, CharSequence msg, boolean isHorizontal) ``` ## 版本迭代 - v1.0.0 ## 版权和许可信息 - Apache Licence