精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

鴻蒙HarmonyOS三方件開發(fā)指南(20)-Dialog組件

開發(fā) 前端 OpenHarmony
Dialog組件是一個顯示不同風格的自定義對話框組件,目前支持十一種風格的顯示。

[[407820]]

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

HarmonyOS三方件開發(fā)指南自一月份上線以來,已經連續(xù)更新了十九期了。今天所發(fā)這篇文章將作為三方件開發(fā)指南第一期的收官之作。我慶幸社區(qū)有這么多志同道合的開發(fā)者們關注我的文章,關于三方件的講解或許對你有所幫助,或許你有更好的建議或想法,都可以來告訴我們。

HarmonyOS的未來是強大的,因為我們廣大開發(fā)者是強大的,是自信的,我也祝福各位開發(fā)者們立“鴻”鵠之志,逐夢未來!

Dialog組件功能介紹

功能介紹

Dialog組件是一個顯示不同風格的自定義對話框組件,目前支持十一種風格的顯示。

模擬器上運行效果

【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)
【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)

Dialog使用方法

新建工程,增加組件Har包依賴

在應用模塊中添加HAR,只需要將dialoglibrary-debug.har復制到entry\libs目錄下即可(由于build.gradle中已經依賴的libs目錄下的*.har,因此不需要在做修改)。

修改配置文件

在entry下面的build.gradle添加library 的依賴

【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)

在代碼中使用

  1.   configBean = StyledDialog.buildMdAlert(getContext(), "提示""確定退出?", new MyDialogListener() { 
  2.     @Override 
  3.     public void positiveButton() { 
  4.         configBean.commonDialog.hide(); 
  5.         configBean.commonDialog = null
  6.     } 
  7.  
  8.     @Override 
  9.     public void negativeButton() { 
  10.         configBean.commonDialog.hide(); 
  11.         configBean.commonDialog = null
  12.     } 
  13. }); 
  14. configBean.commonDialog.show(); 

 show input dialog

  1. configBean = StyledDialog.buildNormalInput(getContext(), "請輸入您的昵稱""長度0-20", new MyDialogListener() { 
  2.  
  3.     @Override 
  4.     public void positiveButton() { 
  5.         //可對輸入內容進行校驗 
  6.         configBean.getInputText1(); 
  7.         configBean.commonDialog.hide(); 
  8.         configBean.commonDialog = null
  9.     } 
  10.  
  11.     @Override 
  12.     public void negativeButton() { 
  13.         configBean.commonDialog.hide(); 
  14.         configBean.commonDialog = null
  15.     } 
  16. }); 
  17. configBean.commonDialog.show(); 

show single choose dialog

  1. CharSequence[] words = {"身份證""手機""鑰匙""錢包"}; 
  2. boolean[] selectItems = {truefalsefalsefalse}; 
  3.  
  4. ArrayList<ChooseBean> list = new ArrayList<>(); 
  5. for (int i = 0; i < words.length; i++) { 
  6.     ChooseBean chooseBean = new ChooseBean(); 
  7.     chooseBean.setTxt(words[i]); 
  8.     chooseBean.setChoosen(selectItems[i]); 
  9.     list.add(chooseBean); 
  10. configBean = StyledDialog.buildMdSingleChoose(getContext(), "單選", list, new MyItemDialogListener() { 
  11.     @Override 
  12.     public void onItemClick(CharSequence text, int position) { 
  13.         new ToastDialog(getContext()).setText(text.toString()).show(); 
  14.  
  15.     } 
  16.  
  17.     @Override 
  18.     public void positiveButton() { 
  19.         configBean.commonDialog.hide(); 
  20.         configBean.commonDialog = null
  21.  
  22.     } 
  23.  
  24.     @Override 
  25.     public void negativeButton() { 
  26.         configBean.commonDialog.hide(); 
  27.         configBean.commonDialog = null
  28.     } 
  29. }); 
  30. configBean.commonDialog.show(); 

show multi choose dialog

  1. CharSequence[] words = {"A.apple""B.bananer""C.pear""D.milk"}; 
  2. boolean[] checkedItems = {falsefalsefalsefalse}; 
  3.  
  4. ArrayList<ChooseBean> list = new ArrayList<>(); 
  5. for (int i = 0; i < words.length; i++) { 
  6.     ChooseBean chooseBean = new ChooseBean(); 
  7.     chooseBean.setTxt(words[i]); 
  8.     chooseBean.setChoosen(checkedItems[i]); 
  9.     list.add(chooseBean); 
  10. configBean = StyledDialog.buildMdMultiChoose(getContext(), "多選", list, 
  11.         new MyCheckBoxItemDialogListener() { 
  12.     @Override 
  13.     public void onItemClick(Checkbox checkbox, int position) { 
  14.         checkedItems[position] = checkbox.isChecked(); 
  15.     } 
  16.  
  17.     @Override 
  18.     public void positiveButton() { 
  19.         configBean.commonDialog.hide(); 
  20.         configBean.commonDialog = null
  21.  
  22.     } 
  23.  
  24.     @Override 
  25.     public void negativeButton() { 
  26.         configBean.commonDialog.hide(); 
  27.         configBean.commonDialog = null
  28.     } 
  29. }); 
  30. configBean.commonDialog.show(); 

show ios alert dialog

  1. configBean = StyledDialog.buildMdIOSAlert(getContext(), "提示""確定退出?", new MyDialogListener() { 
  2.     @Override 
  3.     public void positiveButton() { 
  4.         configBean.commonDialog.hide(); 
  5.         configBean.commonDialog = null
  6.  
  7.     } 
  8.  
  9.     @Override 
  10.     public void negativeButton() { 
  11.         configBean.commonDialog.hide(); 
  12.         configBean.commonDialog = null
  13.     } 
  14. }); 
  15.  
  16.  
  17. configBean.commonDialog.show(); 

show ios vertical alert dialog

  1. configBean = StyledDialog.buildMdIOSAlertVertical(getContext(), "提示""確定退出?", new MyDialogListener() { 
  2.     @Override 
  3.     public void positiveButton() { 
  4.         configBean.commonDialog.hide(); 
  5.         configBean.commonDialog = null
  6.  
  7.     } 
  8.  
  9.     @Override 
  10.     public void negativeButton() { 
  11.         configBean.commonDialog.hide(); 
  12.         configBean.commonDialog = null
  13.     } 
  14. }); 
  15.  
  16.  
  17. configBean.commonDialog.show(); 

show two input dialog

  1. configBean = StyledDialog.buildTwoInput(getContext(), "登錄""請輸入用戶名","請輸入密碼", new MyDialogListener() { 
  2.  
  3.     @Override 
  4.     public void positiveButton() { 
  5.         //可對輸入內容進行校驗 
  6.         configBean.getInputText1(); 
  7.         configBean.getInputText2(); 
  8.         configBean.commonDialog.hide(); 
  9.         configBean.commonDialog = null
  10.     } 
  11.  
  12.     @Override 
  13.     public void negativeButton() { 
  14.         configBean.commonDialog.hide(); 
  15.         configBean.commonDialog = null
  16.     } 
  17. }); 
  18. configBean.commonDialog.show(); 

 show list dialog

  1. CharSequence[] words = {"身份證""手機""鑰匙""錢包"}; 
  2. boolean[] selectItems = {truefalsefalsefalse}; 
  3.  
  4. ArrayList<ChooseBean> list = new ArrayList<>(); 
  5. for (int i = 0; i < words.length; i++) { 
  6.     ChooseBean chooseBean = new ChooseBean(); 
  7.     chooseBean.setTxt(words[i]); 
  8.     chooseBean.setChoosen(selectItems[i]); 
  9.     list.add(chooseBean); 
  10. configBean = StyledDialog.buildMdIOSSingleChoose(getContext(), list, new MyItemDialogListener() { 
  11.     @Override 
  12.     public void onItemClick(CharSequence text, int position) { 
  13.         new ToastDialog(getContext()).setText(text.toString()).show(); 
  14.  
  15.     } 
  16.  
  17.     @Override 
  18.     public void positiveButton() { 
  19.         configBean.commonDialog.hide(); 
  20.         configBean.commonDialog = null
  21.  
  22.     } 
  23.  
  24.     @Override 
  25.     public void negativeButton() { 
  26.         configBean.commonDialog.hide(); 
  27.         configBean.commonDialog = null
  28.     } 
  29. }); 
  30. configBean.commonDialog.show(); 

show bottom button list dialog

  1. CharSequence[] words = {"身份證""手機""鑰匙""錢包"}; 
  2. boolean[] selectItems = {truefalsefalsefalse}; 
  3.  
  4. ArrayList<ChooseBean> list = new ArrayList<>(); 
  5. for (int i = 0; i < words.length; i++) { 
  6.     ChooseBean chooseBean = new ChooseBean(); 
  7.     chooseBean.setTxt(words[i]); 
  8.     chooseBean.setChoosen(selectItems[i]); 
  9.     list.add(chooseBean); 
  10. configBean = StyledDialog.buildMdIOSBottomSingleChoose(getContext(), list, new MyItemDialogListener() { 
  11.     @Override 
  12.     public void onItemClick(CharSequence text, int position) { 
  13.         new ToastDialog(getContext()).setText(text.toString()).show(); 
  14.  
  15.     } 
  16.  
  17.     @Override 
  18.     public void positiveButton() { 
  19.         configBean.commonDialog.hide(); 
  20.         configBean.commonDialog = null
  21.  
  22.     } 
  23.  
  24.     @Override 
  25.     public void negativeButton() { 
  26.         configBean.commonDialog.hide(); 
  27.         configBean.commonDialog = null
  28.     } 
  29. }); 
  30. configBean.commonDialog.show(); 

show bottom list dialog

  1. CharSequence[] words = {"身份證""手機""鑰匙""錢包"}; 
  2. boolean[] selectItems = {truefalsefalsefalse}; 
  3.  
  4. ArrayList<ChooseBean> list = new ArrayList<>(); 
  5. for (int i = 0; i < words.length; i++) { 
  6.     ChooseBean chooseBean = new ChooseBean(); 
  7.     chooseBean.setTxt(words[i]); 
  8.     chooseBean.setChoosen(selectItems[i]); 
  9.     list.add(chooseBean); 
  10. configBean = StyledDialog.buildMdIOSList(getContext(), list, new MyItemDialogListener() { 
  11.     @Override 
  12.     public void onItemClick(CharSequence text, int position) { 
  13.         new ToastDialog(getContext()).setText(text.toString()).show(); 
  14.  
  15.     } 
  16.  
  17.     @Override 
  18.     public void positiveButton() { 
  19.         configBean.commonDialog.hide(); 
  20.         configBean.commonDialog = null
  21.  
  22.     } 
  23.  
  24.     @Override 
  25.     public void negativeButton() { 
  26.         configBean.commonDialog.hide(); 
  27.         configBean.commonDialog = null
  28.     } 
  29. }); 
  30. configBean.commonDialog.show(); 

Menudialog

  1. configBean = StyledDialog.buildMdSingleMenuChoose(getContext(), list, 100, 100, 400,650,new MyItemDialogListener() { 
  2.                 @Override 
  3.                 public void onItemClick(CharSequence text, int position) { 
  4. //                    new ToastDialog(getContext()).setText(text.toString()).show(); 
  5.  
  6.                 } 
  7.  
  8.                 @Override 
  9.                 public void positiveButton() { 
  10.                     configBean.commonDialog.hide(); 
  11.                     configBean.commonDialog = null
  12.  
  13.                 } 
  14.  
  15.                 @Override 
  16.                 public void negativeButton() { 
  17.                     configBean.commonDialog.hide(); 
  18.                     configBean.commonDialog = null
  19.                 } 
  20.             }); 
  21.             configBean.commonDialog.show(); 

Dialog開發(fā)實現

新建一個Module

新建一個Module,類型選擇HarmonyOS Library,模塊名為dialoglibrary,如圖

【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)

實現類

新建一個StyleDialog類,添加靜態(tài)方法,代碼如下:

  1. /** 
  2.  * @param context  context 
  3.  * @param title    對話框的title 
  4.  * @param msg      對話框的提示信息 
  5.  * @param listener 對話框 ok 和 cancle 的點擊監(jiān)聽事件 
  6.  * @return configbean 
  7.  */ 
  8. public static ConfigBean buildMdAlert(Context context, CharSequence title, CharSequence msg, 
  9.                                       MyDialogListener listener) { 
  10.     return DialogAssigner.getInstance().assignMdAlert(context, title, msg, listener); 
  11.  
  12. /** 
  13.  * @param context  context 
  14.  * @param title    對話框的title 
  15.  * @param list     list 
  16.  * @param listener 單項的item 和ok cancle 的點擊事件的監(jiān)聽 
  17.  * @return configbean 
  18.  */ 
  19. public static ConfigBean buildMdSingleChoose(Context context, CharSequence title, ArrayList<ChooseBean> list, 
  20.                                              MyItemDialogListener listener) { 
  21.     return DialogAssigner.getInstance().assignMdSingleChoose(context, title, list, listener); 
  22.  
  23. /** 
  24.  * @param context     context 
  25.  * @param title       對話框的title 
  26.  * @param list        list 
  27.  * @param btnListener ok cancle 的點擊監(jiān)聽事件 
  28.  * @return configbean 
  29.  */ 
  30. public static ConfigBean buildMdMultiChoose(Context context, CharSequence title, ArrayList<ChooseBean> list, 
  31.                                             MyCheckBoxItemDialogListener btnListener) { 
  32.     return DialogAssigner.getInstance().assignMdMultiChoose(context, title, list, btnListener); 
  33.  
  34. /** 
  35.  * @param context  context 
  36.  * @param title    對話框的title 
  37.  * @param hint1    輸入框的hint 文字提示信息 
  38.  * @param listener ok cancle 的點擊監(jiān)聽事件 
  39.  * @return configbean 
  40.  */ 
  41. public static ConfigBean buildNormalInput(Context context, CharSequence title, CharSequence hint1, 
  42.                                           MyDialogListener listener) { 
  43.     return DialogAssigner.getInstance().assignNormalInput(context, title, hint1, listener); 

新建DialogAssigner implements Assignable,代碼如下:

  1. /** 
  2.  * 
  3.  */ 
  4. private static DialogAssigner instance; 
  5.  
  6. /** 
  7.  * 
  8.  */ 
  9. private DialogAssigner() { 
  10.  
  11.  
  12. /** 
  13.  * 
  14.  */ 
  15. public static DialogAssigner getInstance() { 
  16.     if (instance == null) { 
  17.         instance = new DialogAssigner(); 
  18.     } 
  19.     return instance; 
  20.  
  21.  
  22. @Override 
  23. public ConfigBean assignMdAlert(Context context, CharSequence title, CharSequence msg, MyDialogListener listener) { 
  24.  
  25.     ConfigBean bean = new ConfigBean(); 
  26.     bean.context = context; 
  27.  
  28.     bean.msg = msg; 
  29.     bean.title = title; 
  30.     bean.listener = listener; 
  31.     bean.type = DefaultConfig.ALERT_DIALOG; 
  32.     bean.buildByType(bean); 
  33.     return bean; 
  34.  
  35. @Override 
  36. public ConfigBean assignNormalInput(Context context, CharSequence title, CharSequence hint1, 
  37.                                     MyDialogListener listener) { 
  38.     ConfigBean bean = new ConfigBean(); 
  39.     bean.context = context; 
  40.     bean.listener = listener; 
  41.     bean.title = title; 
  42.     bean.hint1 = hint1; 
  43.     bean.type = DefaultConfig.INPUT_DIALOG; 
  44.     bean.buildByType(bean); 
  45.     return bean; 
  46.  
  47. @Override 
  48. public ConfigBean assignMdSingleChoose(Context context, CharSequence title, ArrayList<ChooseBean> list, 
  49.                                        MyItemDialogListener listener) { 
  50.     ConfigBean bean = new ConfigBean(); 
  51.     bean.context = context; 
  52.     bean.title = title; 
  53.     bean.itemListener = listener; 
  54.     bean.type = DefaultConfig.SINGLE_DIALOG; 
  55.     bean.chooseBeans.addAll(list); 
  56.     bean.buildByType(bean); 
  57.     return bean; 
  58.  
  59. @Override 
  60. public ConfigBean assignMdMultiChoose(Context context, CharSequence title, ArrayList<ChooseBean> list, 
  61.                                       MyCheckBoxItemDialogListener checkboxListener) { 
  62.     ConfigBean bean = new ConfigBean(); 
  63.     bean.context = context; 
  64.     bean.msg = title; 
  65.     bean.title = title; 
  66.     bean.checkBoxItemDialogListener = checkboxListener; 
  67.     bean.type = DefaultConfig.MULTI_DIALOG; 
  68.     bean.chooseBeans.addAll(list); 
  69.     bean.buildByType(bean); 
  70.  
  71.     return bean; 

新建MyDialogBuilder,實現不同dialog的生成

  1. /** 
  2.  * 根據dialog類型,生成不同類型的dialog 
  3.  * 
  4.  * @param bean bean 
  5.  * @return configbean 
  6.  */ 
  7. public ConfigBean buildByType(ConfigBean bean) { 
  8.  
  9.     switch (bean.type) { 
  10.         case DefaultConfig.ALERT_DIALOG: 
  11.             buildMdAlert(bean); 
  12.  
  13.             break; 
  14.         case DefaultConfig.INPUT_DIALOG: 
  15.             buildMdInput(bean); 
  16.  
  17.             break; 
  18.         case DefaultConfig.SINGLE_DIALOG: 
  19.             buildMdSingleChoose(bean); 
  20.  
  21.             break; 
  22.         case DefaultConfig.MULTI_DIALOG: 
  23.             buildMdMultiChoose(bean); 
  24.             break; 
  25.         default
  26.             break; 
  27.     } 
  28.     return bean; 
  29.  
  30. /** 
  31.  * 生成alert dialog 
  32.  * 
  33.  * @param bean bean 
  34.  * @return ConfigBean 
  35.  */ 
  36. protected ConfigBean buildMdAlert(final ConfigBean bean) { 
  37.     CommonDialog commonDialog = new CommonDialog(bean.context); 
  38.     Component component = LayoutScatter.getInstance(bean.context).parse(ResourceTable.Layout_alert_dialog_layout, 
  39.             nullfalse); 
  40.     commonDialog.setContentCustomComponent(component); 
  41.     commonDialog.setTransparent(true); 
  42.     Text titleTV = (Text) component.findComponentById(ResourceTable.Id_alert_dialog_title); 
  43.     titleTV.setText(bean.title.toString()); 
  44.     Text messageTV = (Text) component.findComponentById(ResourceTable.Id_alert_dialog_message); 
  45.     messageTV.setText(bean.msg.toString()); 
  46.     Button ok = (Button) component.findComponentById(ResourceTable.Id_alert_dialog_ok); 
  47.     ok.setClickedListener(component1 -> { 
  48.         bean.listener.positiveButton(); 
  49.     }); 
  50.     Button cancle = (Button) component.findComponentById(ResourceTable.Id_alert_dialog_cancle); 
  51.     cancle.setClickedListener(component1 -> { 
  52.         bean.listener.negativeButton(); 
  53.     }); 
  54.     bean.commonDialog = commonDialog; 
  55.     return bean; 
  56.  
  57. /** 
  58.  * 生成input dialog 
  59.  * 
  60.  * @param bean bean 
  61.  * @return ConfigBean 
  62.  */ 
  63. protected ConfigBean buildMdInput(final ConfigBean bean) { 
  64.  
  65.     CommonDialog commonDialog = new CommonDialog(bean.context); 
  66.     Component component = 
  67.             LayoutScatter.getInstance(bean.context).parse(ResourceTable.Layout_input_dialog_layout, null
  68.                     false); 
  69.     commonDialog.setContentCustomComponent(component); 
  70.     commonDialog.setTransparent(true); 
  71.     Text titleTV = (Text) component.findComponentById(ResourceTable.Id_input_dialog_title); 
  72.     titleTV.setText(bean.title.toString()); 
  73.     TextField messageTV = (TextField) component.findComponentById(ResourceTable.Id_input_dialog_text_field); 
  74.     messageTV.setHint(bean.hint1.toString()); 
  75.     Button ok = (Button) component.findComponentById(ResourceTable.Id_input_dialog_ok2); 
  76.     ok.setClickedListener(component1 -> { 
  77.         bean.listener.positiveButton(); 
  78.     }); 
  79.     Button cancle = (Button) component.findComponentById(ResourceTable.Id_input_dialog_cancle); 
  80.     cancle.setClickedListener(component1 -> { 
  81.         bean.listener.negativeButton(); 
  82.     }); 
  83.     bean.commonDialog = commonDialog; 
  84.     return bean; 
  85.  
  86. /** 
  87.  * 生成單選dialog 
  88.  * 
  89.  * @param bean bean 
  90.  * @return ConfigBean 
  91.  */ 
  92. protected ConfigBean buildMdSingleChoose(final ConfigBean bean) { 
  93.     CommonDialog commonDialog = new CommonDialog(bean.context); 
  94.     Component component = 
  95.             LayoutScatter.getInstance(bean.context).parse(ResourceTable.Layout_single_choose_dialog_layout, null
  96.                     false); 
  97.     commonDialog.setTransparent(true); 
  98.     Text titleTv = (Text) component.findComponentById(ResourceTable.Id_single_dialog_title); 
  99.     titleTv.setText(bean.title.toString()); 
  100.     RadioContainer radioContainer = (RadioContainer) component.findComponentById(ResourceTable.Id_radio_container); 
  101.     Resource selectResource = null
  102.     Resource emptyResource = null
  103.     try { 
  104.         selectResource = bean.context.getResourceManager().getResource(ResourceTable.Media_select); 
  105.         emptyResource = bean.context.getResourceManager().getResource(ResourceTable.Media_unselect); 
  106.     } catch (IOException e) { 
  107.         e.printStackTrace(); 
  108.     } catch (NotExistException e) { 
  109.         e.printStackTrace(); 
  110.     } 
  111.  
  112.     PixelMapElement selectElement = new PixelMapElement(selectResource); 
  113.     PixelMapElement emptyElement = new PixelMapElement(emptyResource); 
  114.  
  115.     for (int i = 0; i < bean.chooseBeans.size(); i++) { 
  116.         ChooseBean chooseBean = bean.chooseBeans.get(i); 
  117.         RadioButton radioButton = new RadioButton(bean.context); 
  118.         radioButton.setWidth(ComponentContainer.LayoutConfig.MATCH_CONTENT); 
  119.         radioButton.setHeight(150); 
  120.         radioButton.setTextSize(50); 
  121.         radioButton.setText(chooseBean.getTxt().toString()); 
  122.         radioButton.setButtonElement(null); 
  123.         if (chooseBean.isChoosen()) { 
  124.             radioButton.setSelected(true); 
  125.         } else { 
  126.             radioButton.setSelected(false); 
  127.         } 
  128.         StateElement checkElement = new StateElement(); 
  129.         checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_SELECTED}, selectElement); 
  130.         checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, emptyElement); 
  131.         radioButton.setAroundElements(checkElement, nullnullnull); 
  132.         radioContainer.addComponent(radioButton); 
  133.     } 
  134.     radioContainer.setMarkChangedListener(new RadioContainer.CheckedStateChangedListener() { 
  135.         @Override 
  136.         public void onCheckedChanged(RadioContainer r, int i) { 
  137.             for (int j = 0; j < bean.chooseBeans.size(); j++) { 
  138.                 RadioButton radioButton1 = (RadioButton) r.getComponentAt(j); 
  139.                 if (j == i) { 
  140.                     radioButton1.setSelected(true); 
  141.                     bean.itemListener.onItemClick(bean.chooseBeans.get(i).getTxt(), i); 
  142.                 } else { 
  143.                     radioButton1.setSelected(false); 
  144.                 } 
  145.             } 
  146.         } 
  147.     }); 
  148.  
  149.     Button ok = (Button) component.findComponentById(ResourceTable.Id_single_dialog_ok); 
  150.     ok.setClickedListener(component1 -> { 
  151.         bean.itemListener.positiveButton(); 
  152.     }); 
  153.     Button cancle = (Button) component.findComponentById(ResourceTable.Id_single_dialog_cancle); 
  154.     cancle.setClickedListener(component1 -> { 
  155.         bean.itemListener.negativeButton(); 
  156.     }); 
  157.  
  158.     component.invalidate(); 
  159.     commonDialog.setContentCustomComponent(component); 
  160.     bean.commonDialog = commonDialog; 
  161.  
  162.  
  163.     return bean; 
  164.  
  165. /** 
  166.  * 生成多選dialog 
  167.  * 
  168.  * @param bean bean 
  169.  * @return ConfigBean 
  170.  */ 
  171. protected ConfigBean buildMdMultiChoose(final ConfigBean bean) { 
  172.     CommonDialog commonDialog = new CommonDialog(bean.context); 
  173.     Component component = 
  174.             LayoutScatter.getInstance(bean.context).parse(ResourceTable.Layout_multi_choose_dialog_layout, null
  175.                     false); 
  176.  
  177.     commonDialog.setTransparent(true); 
  178.     DirectionalLayout layout = (DirectionalLayout) component.findComponentById(ResourceTable.Id_checkbox_layout); 
  179.     Resource selectResource = null
  180.     Resource emptyResource = null
  181.     try { 
  182.         selectResource = bean.context.getResourceManager().getResource(ResourceTable.Media_checkbox_select); 
  183.         emptyResource = bean.context.getResourceManager().getResource(ResourceTable.Media_checkbox_unselect); 
  184.     } catch (IOException e) { 
  185.         e.printStackTrace(); 
  186.     } catch (NotExistException e) { 
  187.         e.printStackTrace(); 
  188.     } 
  189.  
  190.     PixelMapElement selectElement = new PixelMapElement(selectResource); 
  191.     PixelMapElement emptyElement = new PixelMapElement(emptyResource); 
  192.  
  193.     for (int i = 0; i < bean.chooseBeans.size(); i++) { 
  194.         ChooseBean chooseBean = bean.chooseBeans.get(i); 
  195.         Checkbox checkbox = new Checkbox(bean.context); 
  196.         checkbox.setWidth(ComponentContainer.LayoutConfig.MATCH_CONTENT); 
  197.         checkbox.setHeight(150); 
  198.         checkbox.setTextSize(50); 
  199.         checkbox.setText(chooseBean.getTxt().toString()); 
  200.  
  201.         if (chooseBean.isChoosen()) { 
  202.             checkbox.setChecked(true); 
  203.  
  204.         } else { 
  205.             checkbox.setChecked(false); 
  206.         } 
  207.  
  208.         checkbox.setButtonElement(null); 
  209.         checkbox.setTag(i); 
  210.  
  211.         StateElement checkElement = new StateElement(); 
  212.         checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_CHECKED}, selectElement); 
  213.         checkElement.addState(new int[]{ComponentState.COMPONENT_STATE_EMPTY}, emptyElement); 
  214.         checkbox.setAroundElements(checkElement, nullnullnull); 
  215.         checkbox.setCheckedStateChangedListener((absButton, state) -> { 
  216.             absButton.setChecked(state); 
  217.  
  218.             absButton.setAroundElements(checkElement, nullnullnull); 
  219.             bean.checkBoxItemDialogListener.onItemClick((Checkbox) absButton, (int) absButton.getTag()); 
  220.         }); 
  221.  
  222.         layout.addComponent(checkbox); 
  223.     } 
  224.  
  225.     Button ok = (Button) component.findComponentById(ResourceTable.Id_multi_dialog_ok); 
  226.     ok.setClickedListener(component1 -> { 
  227.         bean.checkBoxItemDialogListener.positiveButton(); 
  228.     }); 
  229.     Button cancle = (Button) component.findComponentById(ResourceTable.Id_multi_dialog_cancle); 
  230.     cancle.setClickedListener(component1 -> { 
  231.         bean.checkBoxItemDialogListener.negativeButton(); 
  232.     }); 
  233.     component.invalidate(); 
  234.     commonDialog.setContentCustomComponent(component); 
  235.     bean.commonDialog = commonDialog; 
  236.     return bean; 

新建監(jiān)聽接口MyDialogListener、MyItemDialogListener、MyCheckBoxItemDialogListener

編譯HAR包

利用Gradle可以將HarmonyOS Library庫模塊構建為HAR包,構建HAR包的方法如下:

在Gradle構建任務中,雙擊PackageDebugHar或PackageReleaseHar任務,構建Debug類型或Release類型的HAR。

待構建任務完成后,可以在工程目錄中的styledialog> bulid > outputs > har目錄中,獲取生成的HAR包。

【軟通動力】HarmonyOS三方件開發(fā)指南(20)-Dialog組件-鴻蒙HarmonyOS技術社區(qū)

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區(qū)

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區(qū)
相關推薦

2021-02-04 09:45:19

鴻蒙HarmonyOS應用開發(fā)

2021-01-18 09:52:20

鴻蒙HarmonyOS開發(fā)

2021-01-20 09:54:56

鴻蒙HarmonyOS開發(fā)

2021-01-12 12:04:40

鴻蒙HarmonyOS應用開發(fā)

2021-01-21 13:21:18

鴻蒙HarmonyOSPhotoview組件

2021-02-24 15:22:47

鴻蒙HarmonyOS應用開發(fā)

2021-03-01 09:48:24

鴻蒙HarmonyOS應用開發(fā)

2021-01-13 09:40:31

鴻蒙HarmonyOS開發(fā)

2021-04-16 09:28:18

鴻蒙HarmonyOS應用

2021-02-04 13:06:38

鴻蒙HarmonyOS應用開發(fā)

2021-01-22 17:33:03

鴻蒙HarmonyOS應用開發(fā)

2021-05-12 15:17:39

鴻蒙HarmonyOS應用

2021-02-26 14:15:27

鴻蒙HarmonyOS應用開發(fā)

2021-03-19 17:42:01

鴻蒙HarmonyOS應用開發(fā)

2021-04-20 09:42:20

鴻蒙HarmonyOS應用開發(fā)

2021-03-01 14:01:41

鴻蒙HarmonyOS應用開發(fā)

2021-03-31 09:50:25

鴻蒙HarmonyOS應用開發(fā)

2021-04-12 09:36:54

鴻蒙HarmonyOS應用

2021-03-10 15:03:40

鴻蒙HarmonyOS應用

2021-08-02 14:54:50

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

麻豆成人在线视频| 毛片在线视频播放| 国产成人精品一区二三区四区五区| 自拍日韩欧美| 日韩精品极品视频| 污污的视频免费| 538视频在线| 国产校园另类小说区| 91亚洲精品一区二区| 日韩欧美不卡视频| 91精品电影| 亚洲男人的天堂在线播放| 亚洲天堂国产视频| 国产免费不卡| 一级日本不卡的影视| 欧美在线一区二区三区四区| 99热这里只有精| 视频一区二区三区在线| 欧美国产第一页| 美国一级黄色录像| 国产一区在线电影| 在线电影国产精品| 97干在线视频| 国产在线二区| 久久精品欧美日韩精品 | 日韩a级黄色片| 成人av电影观看| 91网页版在线| 国产精品视频免费观看| 国产精品视频a| 久久亚洲色图| 欧美中文字幕在线播放| 国产一级片久久| 亚洲成人精选| 精品国偷自产在线视频99| 亚洲人成人无码网www国产| 成人直播在线观看| 日韩精品专区在线影院观看| 可以看污的网站| 成人开心激情| 一本到不卡免费一区二区| 国产精品久久久久9999爆乳| 91一区二区三区在线| 中文字幕在线不卡一区| 视频二区一区| 欧美日韩国产中文字幕在线| 成人激情av网| 精品久久精品久久| 日批视频在线播放| 99精品视频一区| 国产综合色一区二区三区| 亚洲男人天堂久久| 成人一二三区视频| 精品日产一区2区三区黄免费| 亚洲精品免费在线观看视频| 粉嫩在线一区二区三区视频| 不卡视频一区| 欧美一级片免费| av电影在线观看一区| 激情小说综合区| 四虎精品在线| 国产日韩一级二级三级| 色阁综合av| 男人在线资源站| 一区二区三区日韩欧美| 国产色一区二区三区| 久草免费在线视频| 日韩欧美高清视频| 网站一区二区三区| 国产成人久久精品一区二区三区| 6080yy午夜一二三区久久| 国产无遮挡猛进猛出免费软件| 国产综合色激情| 欧美一级日韩一级| 2一3sex性hd| 精品大片一区二区| 久热精品视频在线免费观看| 久久久无码精品亚洲国产| 亚洲香蕉网站| 国产成人精品优优av| 亚洲一区 中文字幕| 国产精品影音先锋| 精品一区久久久| 永久免费在线观看视频| 亚洲免费观看高清在线观看| 自拍日韩亚洲一区在线| 欧美影视资讯| 91精品国产乱码久久蜜臀| 伊人网综合视频| 欧美亚洲国产精品久久| 欧美疯狂性受xxxxx另类| 人人爽人人爽人人片av| 九色综合狠狠综合久久| 国产在线精品二区| 日本三级视频在线观看| 亚洲成人777| 中文字幕国内自拍| 国产成人在线中文字幕| 中文字幕日韩欧美| 国产精品suv一区二区| 日韩国产成人精品| 国产精品午夜av在线| yw视频在线观看| 香蕉成人啪国产精品视频综合网| 999精彩视频| 日韩av午夜| 久久国产精品电影| 国产亚洲久一区二区| 成人美女在线视频| 日韩第一页在线观看| 欧美成人ⅴideosxxxxx| 日韩精品在线一区二区| 激情五月深爱五月| 午夜亚洲视频| 成人动漫视频在线观看完整版| 成人精品一区二区三区校园激情| 午夜精品福利一区二区蜜股av| 深夜黄色小视频| 亚洲男人都懂第一日本| 欧美高清第一页| 国产一区二区小视频| 久久精品网站免费观看| 六月婷婷在线视频| 亚洲无线观看| 久久久97精品| 在线免费观看一区二区| 久久久蜜桃精品| 九色自拍视频在线观看| 日韩欧美另类中文字幕| 日日狠狠久久偷偷四色综合免费 | av黄色在线| 欧美日韩一区二区欧美激情| brazzers精品成人一区| 国产精品嫩草99av在线| 国产日本一区二区三区| 欧美午夜大胆人体| 欧美大黄免费观看| 久久久久97国产| 国产精品综合二区| 日本三级中文字幕在线观看| 欧美日韩va| 最近中文字幕2019免费| 中文字幕第2页| 亚洲国产激情av| 美女少妇一区二区| 欧美丰满老妇| 国产日韩欧美影视| 麻豆网在线观看| 91精品国产欧美一区二区| 欧美肥妇bbwbbw| 国产精品99久久久久久宅男| 天天在线免费视频| 亚洲午夜精品| 久久久久久久久久久国产| 囯产精品一品二区三区| 亚洲精品成人天堂一二三| www.欧美com| 亚洲视频精品| 久久手机视频| 久久亚洲精品爱爱| 久久久国产精品亚洲一区| 国产熟女一区二区三区五月婷| 亚洲日本va在线观看| 久久综合桃花网| 亚洲黄色毛片| 欧美精品v日韩精品v国产精品| 成人性生交大片免费网站| 一区二区三区日韩在线| 国产精品视频无码| 亚洲国产成人av| 欧美狂猛xxxxx乱大交3| 老鸭窝一区二区久久精品| 中文字幕日韩精品久久| 中文无码日韩欧| 欧美亚洲在线播放| 137大胆人体在线观看| 日韩一级二级三级精品视频| 日本亚洲欧美在线| 久久色中文字幕| 欧美日韩在线观看不卡| 中文一区一区三区免费在线观看| 国产精品久久亚洲7777| 免费成人直播| 久久精品久久久久久| 欧美自拍偷拍一区二区| 在线精品国精品国产尤物884a| 亚洲精品自拍视频在线观看| 国产69精品久久久久777| 中文字幕无码精品亚洲35| 欧洲杯什么时候开赛| 97超级碰碰| 欧美日韩国产v| 欧美精品在线免费播放| 免费理论片在线观看播放老| 91精品麻豆日日躁夜夜躁| 国产香蕉视频在线| ●精品国产综合乱码久久久久| 扒开伸进免费视频| 久久成人av少妇免费| 欧美成人高潮一二区在线看| 99热精品久久| 久久久福利视频| 精品国产乱码一区二区三区 | 深夜福利91大全| 日本免费不卡视频| 欧美精品色综合| 国内自拍视频在线播放| 亚洲一区二区三区在线播放| 懂色av蜜桃av| 久久综合999| 丰满人妻一区二区三区大胸| 日韩高清不卡一区二区| 缅甸午夜性猛交xxxx| 中文字幕一区二区三三| 亚洲精品一区二区三| 婷婷国产精品| 国产精品视频在线免费观看| 国产欧美视频在线| 国产拍精品一二三| 欧美日韩视频网站| 国产91成人在在线播放| 国产美女情趣调教h一区二区| 日韩在线激情视频| 国产在线自天天| 日韩av最新在线| 蜜桃av中文字幕| 日韩一区二区三区免费观看| 亚洲天堂999| 欧美专区在线观看一区| 久久精品无码av| 香蕉成人伊视频在线观看| 国产在线观看免费av| 亚洲欧美色综合| 97成人资源站| 自拍偷拍亚洲综合| 中文字幕91视频| 中文字幕免费观看一区| 国产人妻大战黑人20p| 久久综合久久99| 91精品人妻一区二区| 91啦中文在线观看| 一级做a爰片毛片| 91蝌蚪国产九色| 中文字幕av网址| 欧美国产一区二区在线观看 | 日本一二区不卡| 五月天亚洲综合小说网| 精品一区电影| 亚洲资源在线网| 亚洲人成免费网站| 国产911在线观看| 欧美日韩影院| 人妻少妇精品久久| 国产欧美一区二区三区国产幕精品| 国产3p露脸普通话对白| 国产美女一区| 午夜精品久久久内射近拍高清| 视频一区欧美精品| 五月婷婷六月丁香激情| 国产在线国偷精品免费看| 国产又粗又猛大又黄又爽| 成人一区二区视频| 亚洲午夜福利在线观看| 亚洲国产经典视频| 欧洲猛交xxxx乱大交3| 一区二区三区在线视频播放| 久久精品国产亚洲av无码娇色| 亚洲第一综合色| 无码人妻丰满熟妇奶水区码| 欧美日韩国产在线播放网站| 国产精品久久无码一三区| 日韩免费高清av| 亚洲色偷精品一区二区三区| 一区二区av在线| av在线免费网站| 91精品国产免费久久久久久 | 在线视频免费在线观看一区二区| av免费在线播放网站| 国模无码大尺度一区二区三区| 亚洲香蕉中文网| 久久久99精品久久| 亚洲色婷婷一区二区三区| 精品久久久久久国产91| 中文字幕免费观看视频| 精品少妇一区二区三区| 男人的天堂在线| 欧美成人免费网| 成人欧美大片| caoporen国产精品| 欧美日韩在线播放视频| 黄色一级片黄色| 日韩国产精品大片| 中文字幕乱码一区| 国产精品网站导航| 日韩黄色精品视频| 欧美日韩国产三级| 深夜福利免费在线观看| 久久精品视频播放| 亚洲国产福利| 99精彩视频| 久久精品国产68国产精品亚洲| 免费超爽大片黄| 久久国产精品72免费观看| 国产精品无码一区二区三| 中文字幕一区二区三| 国产综合精品视频| 精品精品国产高清a毛片牛牛| 成人在线高清视频| 55夜色66夜色国产精品视频| 日韩精品免费视频一区二区三区| 日本一区精品| 国产精品日韩欧美一区| 国产精品嫩草69影院| 国产精品灌醉下药二区| 男人天堂2024| 亚洲第一精品夜夜躁人人躁| 精品美女在线观看视频在线观看| 日本久久久久亚洲中字幕| aiai久久| av动漫在线播放| 国内成人免费视频| 少妇视频一区二区| 在线看日本不卡| 九色在线观看| 欧美在线观看一区二区三区| 成人在线tv视频| 国产成人亚洲综合无码| 韩国精品一区二区| 你懂得视频在线观看| 色94色欧美sute亚洲线路二| 亚州av在线播放| 国内精品小视频| 亚洲精品一区二区三区在线| 日本久久高清视频| 狠狠色狠狠色综合系列| 国产精品酒店视频| 欧美色视频在线观看| 国产69久久| 国产精品久久久久久中文字| 国产一区毛片| 国产天堂在线播放| 国产视频一区二区在线| 亚洲 日本 欧美 中文幕| 亚洲男人天堂手机在线| 原纱央莉成人av片| 欧美精品在线一区| 久久久久久自在自线| 国产精品久久免费观看| 欧美亚洲动漫另类| 香蕉视频免费在线播放| 成人久久18免费网站图片| 亚欧美无遮挡hd高清在线视频| 毛片毛片毛片毛| 一区二区成人在线| 欧洲精品久久一区二区| 97超碰国产精品女人人人爽 | 毛片在线视频观看| 国产成人综合网站| 国产在线拍揄自揄拍无码视频| 亚洲成人精品在线| 天堂中文av在线资源库| 清纯唯美一区二区三区| 免费av网站大全久久| 国产稀缺精品盗摄盗拍| 欧美一级精品大片| 激情黄产视频在线免费观看| 美女主播视频一区| 蜜桃视频在线一区| 国产女人被狂躁到高潮小说| 精品国产乱码久久久久久老虎| 性欧美freesex顶级少妇| 三区精品视频| 国产69精品久久久久毛片| 天天操天天操天天操天天| 日韩在线观看你懂的| 999在线精品| 免费看a级黄色片| 亚洲人午夜精品天堂一二香蕉| 亚洲精品无遮挡| 国产精品久久二区| 欧美精品97| 这里只有久久精品| 日韩亚洲欧美高清| jizz内谢中国亚洲jizz| 人人妻人人澡人人爽精品欧美一区| 成人爽a毛片一区二区免费| 中文字幕在线欧美| 欧美大肥婆大肥bbbbb| 最新国产一区| 精品国产一二区| 欧美综合亚洲图片综合区| 免费在线观看的电影网站| 日韩激情久久| 成人小视频免费在线观看| wwwwww在线观看| 欧美激情久久久| 日韩在线欧美| 久久人人爽人人人人片| 91精品国产综合久久久蜜臀粉嫩| 台湾佬中文娱乐网欧美电影|