精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

国产精品对白| 日韩电影免费观看| 久久精品噜噜噜成人av农村| 久久亚洲综合国产精品99麻豆精品福利 | 亚洲精品国产精品国| 9久re热视频在线精品| 亚洲日本aⅴ片在线观看香蕉| 日本高清久久久| 久操av在线| 高清日韩电视剧大全免费| 欧美极品美女电影一区| 久久精品国产亚洲av久| 国产精品久久久久久久久久久久久久久 | 一本在线高清不卡dvd| 精品国产一二| 国产精品伦理一区| 亚洲一区久久| 欧美老女人xx| 国产精品视频在| 欧美成人午夜77777| 欧美伦理视频网站| 日韩欧美在线播放视频| 18videosex性欧美麻豆| 久久精品视频在线看| 成人三级视频在线观看一区二区| 香蕉污视频在线观看| 黄色免费成人| 久久精品福利视频| 四季av中文字幕| 亚洲婷婷丁香| 亚洲第一av网站| 九九九九九伊人| 免费高清视频在线一区| 黑人巨大精品欧美一区二区免费| 小泽玛利亚av在线| 欧美jizz18性欧美| 中文av一区二区| 免费影院在线观看一区| 天堂av在线播放| 成人丝袜18视频在线观看| 国产一区在线播放| 中文字幕乱码人妻二区三区| 亚洲一区欧美二区| 97成人精品区在线播放| 久久久久久国产精品免费播放| 四虎成人精品永久免费av九九| 亚洲欧洲视频在线| 五月婷婷综合在线观看| 国产精品对白久久久久粗| 日韩欧美一二三| www.欧美激情.com| 日本一区二区中文字幕| 欧美精品tushy高清| 一级片视频免费观看| 99精品国自产在线| 欧美视频免费在线| 免费在线激情视频| 亚洲伊人av| 色噜噜狠狠色综合中国| 99视频免费播放| 黄色精品视频| 欧美日韩国产小视频| 天天干天天色天天干| 99精品美女视频在线观看热舞| 欧美日韩小视频| 国产成人在线综合| 911精品国产| 亚洲国产成人91精品| 老熟妇精品一区二区三区| 欧美理伦片在线播放| 日韩精品在线第一页| 国产123在线| 久久影视一区| 欧美日本亚洲视频| 国产乡下妇女做爰视频| 免费永久网站黄欧美| 国产精品av免费在线观看| 中文字幕在线2018| 国产激情精品久久久第一区二区| 国产福利久久| 三区在线视频| 国产精品亲子伦对白| 黄色网在线视频| 玖玖在线播放| 欧美视频中文字幕| 日本中文字幕在线不卡| 鲁大师精品99久久久| 国产亚洲欧美日韩美女| 青青青在线免费观看| 国产精品婷婷| 国产有码一区二区| 免费观看国产精品| 国产欧美日韩综合精品一区二区| 97超碰免费观看| 都市激情国产精品| 欧美日韩一本到| 亚洲精品乱码久久久久久蜜桃图片| 亚洲视频分类| 色综合久久久久久中文网| 国产精品久久久久久99| 另类综合日韩欧美亚洲| 国产精品v欧美精品v日韩| 国产有码在线| 亚洲一本大道在线| 色免费在线视频| 精品中国亚洲| 久久天天躁狠狠躁夜夜躁2014| 久久久久久久久久久久久久av| 久久精品国产亚洲高清剧情介绍 | 一级特黄色大片| av网站免费线看精品| 一区二区三区四区欧美| 无码小电影在线观看网站免费| 欧美日韩激情一区二区| 一级做a爰片毛片| 欧美 亚欧 日韩视频在线| 日本精品久久久久影院| 亚洲欧美强伦一区二区| 国产精品视频一二| 男人揉女人奶房视频60分| 国产高清日韩| 亚洲午夜精品久久久久久性色 | 亚洲成人影院麻豆| 姬川优奈aav一区二区| 亚洲精品国产一区二区三区| 国产成人精品三级高清久久91| 欧美激情视频一区二区| 亚洲天堂网在线视频| 国产亚洲欧美日韩在线一区| 日韩中字在线观看| 一区二区三区免费在线看| 色噜噜狠狠色综合网图区| av图片在线观看| 97成人超碰视| av免费观看国产| 白嫩白嫩国产精品| 欧美日韩成人精品| a天堂在线视频| 亚洲美女视频在线观看| 天堂av2020| 色综合色综合| 国产精品老牛影院在线观看| 国内av一区二区三区| 偷拍一区二区三区四区| 亚洲高清无码久久| 欧美ab在线视频| 91亚洲va在线va天堂va国| 成年人视频在线观看免费| 色偷偷久久一区二区三区| 尤物网站在线观看| 91久久午夜| 久久99国产精品99久久| 天堂资源在线| 亚洲色图13p| 国产裸体美女永久免费无遮挡| 久久久噜噜噜久噜久久综合| 日本www在线播放| 欧美男男gaytwinkfreevideos| 日本不卡高字幕在线2019| 亚洲三区在线播放| 色综合久久88色综合天天免费| 亚洲国产天堂av| 三级欧美在线一区| 性刺激综合网| 国产精品一级在线观看| 欧美成人黄色小视频| 亚洲精品久久久蜜桃动漫| 一区二区三区四区不卡在线| 久久精品aⅴ无码中文字字幕重口| 欧美日韩综合| 精品国产aⅴ麻豆| 希岛爱理一区二区三区av高清| 国产一区二区三区视频| 在线观看毛片av| 国产精品高潮呻吟久久| 久久精品久久99| 国产人妖一区二区| 极品国产人妖chinesets亚洲人妖| 欧美精品制服第一页| 亚洲国产精彩视频| 欧美天堂在线观看| 97精品在线播放| 国产福利电影一区二区三区| 国产素人在线观看| 日韩在线第七页| 成人午夜影院在线观看| 日韩精品一区二区三区| 久久天天躁日日躁| 欧洲视频在线免费观看| 欧美美女一区二区三区| 日韩精品一区三区| 中文字幕二三区不卡| 能看毛片的网站| 久久99伊人| 艳母动漫在线观看| 伊人久久综合影院| 91在线视频成人| sis001欧美| 久久视频在线直播| 欧美女子与性| 欧美大片免费久久精品三p| 无码免费一区二区三区| 亚洲激情av在线| 国产123在线| 99久久婷婷国产综合精品| 天天爽人人爽夜夜爽| 亚洲精品国产日韩| 三年中国中文在线观看免费播放| 欧美性生活一级片| 亚洲一区二区三区乱码aⅴ| 亚洲涩涩在线| 欧美激情videoshd| 午夜在线播放| 亚洲美女精品成人在线视频| 99热这里精品| 欧美在线影院一区二区| 日韩欧美亚洲视频| 曰韩精品一区二区| 殴美一级黄色片| 2020国产成人综合网| 四川一级毛毛片| 理论片日本一区| 日韩黄色片视频| 一区二区亚洲精品| 国产奶头好大揉着好爽视频| 亚洲婷婷丁香| 久久精品人成| 99香蕉久久| 亚洲aa中文字幕| 成人在线免费| 国产精品第二页| 国产精品av一区二区三区 | 久久免费播放视频| 亚洲欧美激情在线| 五月婷婷综合激情网| 国产欧美精品一区二区色综合朱莉 | 手机福利在线视频| 日本久久一二三四| 日本10禁啪啪无遮挡免费一区二区| 精品资源在线| 精品欧美一区二区久久久伦| 97青娱国产盛宴精品视频| 91aaaa| 亚洲精选av| caoporn国产精品免费公开| 成人综合日日夜夜| 91在线网站视频| 精品亚洲二区| 99国精产品一二二线| 一区二区三区四区高清视频| 超碰97在线人人| 97品白浆高清久久久久久| 99re在线观看视频| 成人在线超碰| 国产区一区二区| 人体久久天天| 欧美日韩电影一区二区| 精品在线手机视频| 日韩精品成人一区二区在线观看| 九九亚洲视频| 亚洲精品中文综合第一页| 欧美日韩水蜜桃| 亚洲一区二区在| 欧美另类女人| 久草视频这里只有精品| 一本色道久久综合亚洲精品不卡 | 国产欧美自拍视频| 亚洲精品一区二区妖精| 黄色免费高清视频| 欧美黄在线观看| 国产传媒久久久| 亚洲作爱视频| 中文字幕永久视频| 国内精品伊人久久久久av影院| 在线播放免费视频| 成人一区二区三区| 亚洲а∨天堂久久精品2021| 亚洲欧美一区二区视频| 精品无码一区二区三区电影桃花 | 久久9精品区-无套内射无码| 日韩精品久久理论片| 人人爽人人爽av| 99久久精品免费看国产| 国产精品天天干| 亚洲女厕所小便bbb| 日韩 国产 在线| 精品视频一区二区三区免费| 国产福利资源在线| 亚洲精品一区二三区不卡| 免费网站成人| 午夜精品一区二区三区在线| 你懂得影院夜精品a| 92看片淫黄大片欧美看国产片| 久久夜色电影| 亚洲欧洲久久| 一区二区毛片| 五月天婷婷在线观看视频| 2017欧美狠狠色| 久久久久噜噜噜亚洲熟女综合| 日韩欧美综合在线视频| 国产ts人妖调教重口男| 亚洲欧美日韩视频一区| 日本欧美电影在线观看| 国产精品亚洲激情| 老汉色老汉首页av亚洲| 日韩欧美一区二区视频在线播放| 欧美a级片一区| 成人亚洲精品777777大片| 北条麻妃一区二区三区| 你懂得在线观看| 色综合天天综合网天天看片| 午夜精品久久久久久久96蜜桃 | 久久久久无码国产精品一区| 国产精品久久久久无码av| 动漫av网站免费观看| 成人一区二区三区中文字幕| 国产在线免费看| 欧美色图在线观看| 色视频免费在线观看| 久久久欧美一区二区| 国产aa精品| 亚洲7777| 久久在线91| 疯狂揉花蒂控制高潮h| 亚洲一区二区在线免费看| 国产又粗又猛又爽又黄视频| 国产一区二区三区视频免费| 在线天堂新版最新版在线8| 成人激情av| 欧美国产91| 成年人性生活视频| 中文字幕佐山爱一区二区免费| 性高潮视频在线观看| 亚洲丝袜在线视频| 综合另类专区| 精品视频第一区| 99精品国产在热久久下载| 五月天丁香社区| 一区二区三区美女| 亚洲精品成人区在线观看| 欧美日本亚洲视频| 午夜日韩影院| www.激情网| fc2成人免费人成在线观看播放 | 91麻豆精品国产无毒不卡在线观看 | 久久免费看少妇高潮| 少妇一级淫片免费放中国| 亚洲激情久久久| 日本三级一区| 欧洲国产精品| 日韩av一区二| 色www亚洲国产阿娇yao| 欧美日韩黄色影视| h网站久久久| 国产精品xxx在线观看www| 亚洲三级影院| 亚洲性猛交xxxx乱大交| 欧美系列一区二区| 黄色精品免费看| 99se婷婷在线视频观看| 伊人狠狠色j香婷婷综合| xxxx黄色片| 色欲综合视频天天天| 91在线品视觉盛宴免费| 成人免费福利视频| 欧美午夜国产| 中文字幕日韩三级片| 在线精品视频小说1| 在线视频1区2区| 99国产超薄肉色丝袜交足的后果| 亚洲精品影院在线观看| 欧美成人国产精品一区二区| 欧美三日本三级三级在线播放| 免费黄色电影在线观看| 国产91色在线|亚洲| 免播放器亚洲| 国产喷水在线观看| 亚洲精品一线二线三线| 欧美男体视频| 99精品视频网站| www.66久久| 中文字幕永久免费视频| 欧美老女人xx| 精品国产91久久久久久浪潮蜜月| 日本超碰在线观看| 亚洲无线码一区二区三区| 欧洲亚洲精品视频| 91在线网站视频| 亚洲免费中文| 免费高清在线观看电视| 日韩h在线观看| 91麻豆精品一二三区在线| 欧洲精品一区二区三区久久| 国产亚洲成年网址在线观看| 99热这里只有精品99| 欧美一级片一区| 欧美日韩国内| 黄色片在线观看免费| 精品第一国产综合精品aⅴ| 福利一区视频|