自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

鴻蒙開源第三方組件—懸浮按鈕彈出菜單組件BoomMenu

開源
首先添加 gradle 在 build file文件中,添加BoomMenuButton到xml中,創(chuàng)建頁面布局,最后初始化BoomMenuButton。

[[415608]]

想了解更多內(nèi)容,請?jiān)L問:

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

https://harmonyos.51cto.com

前言

基于安卓平臺(tái)的懸浮按鈕彈出菜單組件BoomMenu(https://github.com/Nightonke/BoomMenu), 實(shí)現(xiàn)了鴻蒙的功能化遷移和重構(gòu)。代碼已經(jīng)開源到(https://gitee.com/openneusoft/boom-menu),歡迎各位開發(fā)者下載使用并提出寶貴意見!

背景

BoomMenu是一個(gè)爆炸式顯示類component,可定制顯示個(gè)數(shù),位置等,可獨(dú)自顯示,也可以添加到component容器中(List等)使用。BoomMenu組件視覺效果突出、樣式多樣化。

組件效果展示

BoomMenu組件包含一個(gè)主菜單頁面,點(diǎn)擊主菜單不同按鈕,就會(huì)進(jìn)入到不同的子菜單頁面。其中子菜單中有各種不同樣式和不同的彈出以及收回方式效果,如圖所示,效果非常炫酷~

圖 Fade Views效果展示

圖 Button Place Alignment效果展示

圖 Custom Position效果展示

圖 Draggable效果展示

圖 Simple Circle Button效果展示

Sample解析

在創(chuàng)建第一個(gè)Demo前需要先配置一些文件,

Step 1. 添加 gradle 在 build file文件中

  1. allprojects { 
  2.     repositories { 
  3.         ... 
  4.         mavenCentral() 
  5.     } 

Step 2. 添加 dependency

  1. dependencies { 
  2.      implementation 'io.openharmony.tpc.thirdlib:boommenu:1.0.0' 

接下來才開始進(jìn)行代碼部分的編寫,創(chuàng)建布局。

Step 3.添加BoomMenuButton到xml中:

  1. <com.nightonke.boommenu.BoomMenuButton 
  2.     ohos:id="$+id:boom" 
  3.     ohos:width="match_content" 
  4.     ohos:height="match_content" 
  5.     ohos:align_parent_bottom="true" 
  6.     ohos:align_parent_right="true" 
  7.     ohos:align_parent_end="true" 
  8.     ohos:margin="20dp" 
  9.     app:boom_inActionBar="false" 
  10.     app:boom_button_color="$color:colorPrimary" 
  11.     app:boom_button_pressed_color="$color:colorPrimary" 
  12.     /> 

Step 4.在onStart()方法中findComponentById,初始化BoomMenuButton:

  1. public void onStart(Intent intent) { 
  2.       super.onStart(intent); 
  3.  
  4.       ComponentContainer cc = initView(); 
  5.       super.setUIContent(cc); 
  6.       LayoutScatter mInflater = LayoutScatter.getInstance(this); 
  7.  
  8.       Component actionBar = mInflater.parse(ResourceTable.Layout_custom_actionbar, null,true); 
  9.  
  10.       BoomMenuButton leftBmb = (BoomMenuButton) actionBar.findComponentById(ResourceTable.Id_action_bar_left_bmb); 
  11.       BoomMenuButton rightBmb = (BoomMenuButton) actionBar.findComponentById(ResourceTable.Id_action_bar_right_bmb); 
  12.  
  13.       leftBmb.setButtonEnum(ButtonEnum.TextOutsideCircle); 
  14.       leftBmb.setPiecePlaceEnum(PiecePlaceEnum.DOT_9_1); 
  15.       leftBmb.setButtonPlaceEnum(ButtonPlaceEnum.SC_9_1); 
  16.       for (int i = 0; i < leftBmb.getPiecePlaceEnum().pieceNumber(); i++) 
  17.           leftBmb.addBuilder(BuilderManager.getTextOutsideCircleButtonBuilderWithDifferentPieceColor()); 
  18.       leftBmb.buildButton(); 
  19.  
  20.       rightBmb.setButtonEnum(ButtonEnum.Ham); 
  21.       rightBmb.setPiecePlaceEnum(PiecePlaceEnum.HAM_4); 
  22.       rightBmb.setButtonPlaceEnum(ButtonPlaceEnum.HAM_4); 
  23.       for (int i = 0; i < rightBmb.getPiecePlaceEnum().pieceNumber(); i++) 
  24.           rightBmb.addBuilder(BuilderManager.getHamButtonBuilderWithDifferentPieceColor()); 
  25.       rightBmb.buildButton(); 
  26.   } 
  27.  
  28.  
  29. blic ComponentContainer initView(){ 
  30.       DirectionalLayout myLayout = new DirectionalLayout(this); 
  31.       myLayout.setWidth(MATCH_PARENT); 
  32.       myLayout.setHeight(MATCH_PARENT); 
  33.       myLayout.setOrientation(Component.VERTICAL); 
  34.  
  35.       ShapeElement element = new ShapeElement(); 
  36.       element.setRgbColor(new RgbColor(255, 255, 255)); 
  37.       myLayout.setBackground(element); 
  38.  
  39.       myLayout.addComponent(getActionBar()); 
  40.       return myLayout; 
  41.  
  42.   } 
  43.  
  44.   private ToolBar getActionBar() { 
  45.       if (toolBar == null) { 
  46.           toolBar = new ToolBar(getContext()); 
  47.           toolBar.setLayoutConfig(new DirectionalLayout.LayoutConfig(MATCH_PARENT, Utils.vpToPx(getContext(), 56))); 
  48.  
  49.  
  50.           ShapeElement element = new ShapeElement(); 
  51.           element.setRgbColor(new RgbColor(63,81,180)); 
  52.           toolBar.setBackground(element); 
  53.           toolBar.setLeftImageElement(new VectorElement(getContext(), ResourceTable.Graphic_ic_gallery_view)); 
  54.           toolBar.setTitleTextColor(Color.WHITE, Color.WHITE); 
  55.           toolBar.setTitle(getString(ResourceTable.String_actionBar)); 
  56.  
  57.  
  58.           toolBar.setMenuVisibility(Component.HIDE); 
  59.           toolBar.setOtherImageElement(new VectorElement(getContext(), ResourceTable.Graphic_ic_ellipsis_vertical_white)); 
  60.           toolBar.setClickedListener(new Component.ClickedListener() { 
  61.               @Override 
  62.               public void onClick(Component component) { 
  63.                   bmb = (BoomMenuButton) findComponentById(ResourceTable.Id_bmb); 
  64.                   assert bmb != null
  65.                   bmb.setButtonEnum(ButtonEnum.Ham); 
  66.                   for (int i = 0; i < bmb.getPiecePlaceEnum().pieceNumber(); i++) 
  67.                       bmb.addBuilder(BuilderManager.getHamButtonBuilderWithDifferentPieceColor()); 
  68.                   bmb.buildButton(); 
  69.               } 
  70.           }); 
  71.       } 
  72.       return toolBar; 
  73.   } 

最后

最后,我們總結(jié)一下整體懸浮按鈕彈出菜單組件BoomMenu的實(shí)現(xiàn)過程。首先添加 gradle 在 build file文件中,添加BoomMenuButton到xml中,創(chuàng)建頁面布局,最后初始化BoomMenuButton。

想了解更多內(nèi)容,請?jiān)L問:

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

https://harmonyos.51cto.com

 

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

2021-04-15 17:47:38

鴻蒙HarmonyOS應(yīng)用

2021-03-24 09:30:49

鴻蒙HarmonyOS應(yīng)用

2021-03-10 15:03:40

鴻蒙HarmonyOS應(yīng)用

2021-04-29 14:32:24

鴻蒙HarmonyOS應(yīng)用

2021-03-03 09:42:26

鴻蒙HarmonyOS圖片裁剪

2021-03-01 14:00:11

鴻蒙HarmonyOS應(yīng)用

2021-08-26 16:07:46

鴻蒙HarmonyOS應(yīng)用

2021-08-03 10:07:41

鴻蒙HarmonyOS應(yīng)用

2021-04-08 14:57:52

鴻蒙HarmonyOS應(yīng)用

2021-04-20 15:06:42

鴻蒙HarmonyOS應(yīng)用

2021-07-06 18:21:31

鴻蒙HarmonyOS應(yīng)用

2021-08-30 17:55:58

鴻蒙HarmonyOS應(yīng)用

2021-07-20 15:20:40

鴻蒙HarmonyOS應(yīng)用

2021-03-12 16:35:33

鴻蒙HarmonyOS應(yīng)用

2021-11-02 14:54:21

鴻蒙HarmonyOS應(yīng)用

2017-12-11 15:53:56

2021-11-17 15:37:43

鴻蒙HarmonyOS應(yīng)用

2021-06-29 09:28:16

鴻蒙HarmonyOS應(yīng)用

2021-01-27 10:04:46

鴻蒙HarmonyOS動(dòng)畫

2021-08-10 15:23:08

鴻蒙HarmonyOS應(yīng)用
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號