鸿蒙开源三方组件 -- 对话弹窗工具DialogUtil组件,


 

想了解更多内容,请访问:

51CTO和华为官方战略合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

前言

material风格,ios风格,自动获取顶层ability,可在任意界面弹出,可在任意线程弹出。

基于安卓平台的DialogUtil组件(https://github.com/hss01248/DialogUtil)

实现了鸿蒙化,代码已经开源到(https://gitee.com/openneusoft/dialog-util)

欢迎各位下载使用并提出宝贵意见!。

特性

  • 安全,任意线程均可调用。
  • 类型丰富,包括常用的ios风格dialog和material design风格的dialog,且按钮和文字样式可便捷地修改。
  • 自定义view:可以传入自定义的view,定义好事件,本工具负责安全地显示。
  • 也可以保留iso样式或material 样式的底部按钮和上方title(可隐藏),中间的view可以完全自定义。
  • 也可以设置宽高百分比来自定义宽高。
  • 可以关闭默认的阴影背景,从而能使用xml中自定义的背景(弹出自定义view的dialog时常用)。
  • ios样式和material 样式的均可以在三种状态下显示: 普通dialog,TYPE_TOAST。
  • 支持带x的广告样式的动画。

组件示例效果

集成方式

方式一:

通过library生成har包,添加har包到libs文件夹内。

在entry的gradle内添加如下代码:

  1. implementation fileTree(dir:'libs', include:['*.jar','*.har']) 

方式二:

  1. allprojects{ 
  2.     repositories{ 
  3.         mavenCentral() 
  4.     } 
  5. implementation 'io.github.dzsf:DialogUtil:1.0.0' 

如何使用

初始化

  1. //在Ability的onStart方法里: 
  2. 传入context 
  3. StyledDialog.init(this); 

示例代码(MainAbilitySlice里)

  1. //使用默认样式时,无须.setxxx: 
  2.   StyledDialog.buildLoading().show(); 
  3.    
  4.   //自定义部分样式时: 
  5.   StyledDialog.buildMdAlert("title", msg,  new MyDialogListener() { 
  6.               @Override 
  7.               public void onFirst() { 
  8.                   showToast("onFirst"); 
  9.               } 
  10.  
  11.               @Override 
  12.               public void onSecond() { 
  13.                   showToast("onSecond"); 
  14.               } 
  15.  
  16.               @Override 
  17.               public void onThird() { 
  18.                   showToast("onThird"); 
  19.               } 
  20.  
  21.  
  22.           }) 
  23.                   .setBtnSize(20) 
  24.                   .setBtnText("i","b","3") 
  25.                   .show(); 

相关回调 MyDialogListener

  1. public abstract void onFirst();//md-确定,ios-第一个 
  2.     public abstract void onSecond();//md-取消,ios-第二个 
  3.     public void onThird(){}//md-netural,ios-第三个 
  4.  
  5.     public void onCancle(){} 
  6.  
  7.     /** 
  8.      * 提供给Input的回调 
  9.      * @param input1 
  10.      * @param input2 
  11.      */ 
  12.     public void onGetInput(CharSequence input1,CharSequence input2){ 
  13.  
  14.     } 
  15.  
  16.     /** 
  17.      * 提供给MdSingleChoose的回调 
  18.      * @param chosen 
  19.      * @param chosenTxt 
  20.      */ 
  21.     public void onGetChoose(int chosen,CharSequence chosenTxt){ 
  22.  
  23.     } 
  24.  
  25.     /** 
  26.      * 提供给MdMultiChoose的回调 
  27.      * @param states 
  28.      */ 
  29.     public void onChoosen( List<Integer> selectedIndex, List<CharSequence> selectedStrs,boolean[] states){ 
  30.  
  31.     } 

MyItemDialogListener

  1. /** 
  2.     * IosSingleChoose,BottomItemDialog的点击条目回调 
  3.     * @param text 
  4.     * @param position 
  5.     */ 
  6.   public abstract void onItemClick(CharSequence text, int position); 
  7.  
  8.  
  9.    /** 
  10.     * BottomItemDialog的底部按钮(经常是取消)的点击回调 
  11.     */ 
  12.   public void onBottomBtnClick(){} 

最后必须调用show(),返回dialog对象

progress dialog 的进度更新

  1. /** 
  2.  *  可以在任何线程调用 
  3.  * @param dialog 传入show方法返回的对象 
  4.  * @param progress 
  5.  * @param max 
  6.  * @param msg 如果是转圈圈,会将msg变成msg:78%的形式.如果是水平,msg不起作用 
  7.  * @param isHorizontal 是水平线状,还是转圈圈 
  8.  */ 
  9. public static void updateProgress( Dialog dialog, int progress,  int max,  CharSequence msg,  boolean isHorizontal) 

附录1:相关资料

IDE官方下载地址:https://developer.harmonyos.com/cn/develop/deveco-studio

想了解更多内容,请访问:

51CTO和华为官方战略合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

相关内容