鴻蒙開源三方組件 -- 對(duì)話彈窗工具DialogUtil組件
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)
前言
material風(fēng)格,ios風(fēng)格,自動(dòng)獲取頂層ability,可在任意界面彈出,可在任意線程彈出。
基于安卓平臺(tái)的DialogUtil組件(https://github.com/hss01248/DialogUtil)
實(shí)現(xiàn)了鴻蒙化,代碼已經(jīng)開源到(https://gitee.com/openneusoft/dialog-util)
歡迎各位下載使用并提出寶貴意見!。
特性
- 安全,任意線程均可調(diào)用。
- 類型豐富,包括常用的ios風(fēng)格dialog和material design風(fēng)格的dialog,且按鈕和文字樣式可便捷地修改。
- 自定義view:可以傳入自定義的view,定義好事件,本工具負(fù)責(zé)安全地顯示。
- 也可以保留iso樣式或material 樣式的底部按鈕和上方title(可隱藏),中間的view可以完全自定義。
- 也可以設(shè)置寬高百分比來自定義寬高。
- 可以關(guān)閉默認(rèn)的陰影背景,從而能使用xml中自定義的背景(彈出自定義view的dialog時(shí)常用)。
- ios樣式和material 樣式的均可以在三種狀態(tài)下顯示: 普通dialog,TYPE_TOAST。
- 支持帶x的廣告樣式的動(dòng)畫。
組件示例效果
集成方式
方式一:
通過library生成har包,添加har包到libs文件夾內(nèi)。
在entry的gradle內(nèi)添加如下代碼:
- implementation fileTree(dir:'libs', include:['*.jar','*.har'])
方式二:
- allprojects{
- repositories{
- mavenCentral()
- }
- }
- implementation 'io.github.dzsf:DialogUtil:1.0.0'
如何使用
初始化
- //在Ability的onStart方法里:
- 傳入context
- StyledDialog.init(this);
示例代碼(MainAbilitySlice里)
- //使用默認(rèn)樣式時(shí),無須.setxxx:
- StyledDialog.buildLoading().show();
- //自定義部分樣式時(shí):
- 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();
相關(guān)回調(diào) MyDialogListener
- public abstract void onFirst();//md-確定,ios-第一個(gè)
- public abstract void onSecond();//md-取消,ios-第二個(gè)
- public void onThird(){}//md-netural,ios-第三個(gè)
- public void onCancle(){}
- /**
- * 提供給Input的回調(diào)
- * @param input1
- * @param input2
- */
- public void onGetInput(CharSequence input1,CharSequence input2){
- }
- /**
- * 提供給MdSingleChoose的回調(diào)
- * @param chosen
- * @param chosenTxt
- */
- public void onGetChoose(int chosen,CharSequence chosenTxt){
- }
- /**
- * 提供給MdMultiChoose的回調(diào)
- * @param states
- */
- public void onChoosen( List<Integer> selectedIndex, List<CharSequence> selectedStrs,boolean[] states){
- }
MyItemDialogListener
- /**
- * IosSingleChoose,BottomItemDialog的點(diǎn)擊條目回調(diào)
- * @param text
- * @param position
- */
- public abstract void onItemClick(CharSequence text, int position);
- /**
- * BottomItemDialog的底部按鈕(經(jīng)常是取消)的點(diǎn)擊回調(diào)
- */
- public void onBottomBtnClick(){}
最后必須調(diào)用show(),返回dialog對(duì)象
progress dialog 的進(jìn)度更新
- /**
- * 可以在任何線程調(diào)用
- * @param dialog 傳入show方法返回的對(duì)象
- * @param progress
- * @param max
- * @param msg 如果是轉(zhuǎn)圈圈,會(huì)將msg變成msg:78%的形式.如果是水平,msg不起作用
- * @param isHorizontal 是水平線狀,還是轉(zhuǎn)圈圈
- */
- public static void updateProgress( Dialog dialog, int progress, int max, CharSequence msg, boolean isHorizontal)
附錄1:相關(guān)資料
IDE官方下載地址:https://developer.harmonyos.com/cn/develop/deveco-studio
51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)