{"id":13396339,"url":"https://github.com/Nightonke/BoomMenu","last_synced_at":"2025-03-13T23:30:56.195Z","repository":{"id":39171040,"uuid":"54263833","full_name":"Nightonke/BoomMenu","owner":"Nightonke","description":"A menu which can ... BOOM! - Android","archived":false,"fork":false,"pushed_at":"2023-03-12T07:41:43.000Z","size":103934,"stargazers_count":5808,"open_issues_count":120,"forks_count":1156,"subscribers_count":179,"default_branch":"master","last_synced_at":"2024-10-29T15:32:43.266Z","etag":null,"topics":["animation","boom","menu"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Nightonke.png","metadata":{"files":{"readme":"README-EN.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2016-03-19T12:04:12.000Z","updated_at":"2024-10-23T02:16:43.000Z","dependencies_parsed_at":"2024-10-25T19:12:24.574Z","dependency_job_id":null,"html_url":"https://github.com/Nightonke/BoomMenu","commit_stats":{"total_commits":161,"total_committers":4,"mean_commits":40.25,"dds":0.5031055900621118,"last_synced_commit":"e20b5ea52d67679968c6950b40fb7430f574cb71"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nightonke%2FBoomMenu","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nightonke%2FBoomMenu/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nightonke%2FBoomMenu/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Nightonke%2FBoomMenu/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Nightonke","download_url":"https://codeload.github.com/Nightonke/BoomMenu/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243365638,"owners_count":20279215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["animation","boom","menu"],"created_at":"2024-07-30T18:00:45.772Z","updated_at":"2025-03-13T23:30:56.186Z","avatar_url":"https://github.com/Nightonke.png","language":"Java","readme":"# BoomMenu \n[![WoWoViewPager](https://github.com/Nightonke/WoWoViewPager/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/WoWoViewPager)\n[![BoomMenu](https://github.com/Nightonke/BoomMenu/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/BoomMenu)\n[![CoCoin](https://github.com/Nightonke/CoCoin/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/CoCoin)\n[![BlurLockView](https://github.com/Nightonke/BlurLockView/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/BlurLockView)\n[![LeeCo](https://github.com/Nightonke/LeeCo/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/LeeCo)\n[![GithubWidget](https://github.com/Nightonke/GithubWidget/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/GithubWidget)\n[![JellyToggleButton](https://github.com/Nightonke/JellyToggleButton/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/JellyToggleButton)\n[![FaceOffToggleButton](https://github.com/Nightonke/FaceOffToggleButton/blob/master/app/src/main/res/mipmap-hdpi/ic_launcher.png?raw=true)](https://github.com/Nightonke/FaceOffToggleButton)\n\n###This README is only for version 1.0.9 or below. Strongly suggest to use [new version](https://github.com/Nightonke/BoomMenu/wiki)\n\nTired of these menu buttons?\n\n![Old Menu Buttons](https://github.com/Nightonke/BoomMenu/raw/master/Pictures/old_action_bar_menu.png)\n\nWhy not try these:\n\n![Circle](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/show_circle.gif?raw=true)\n![Ham](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/show_ham.gif?raw=true)\n\n![List](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/show_list.gif?raw=true)\n![Share](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/show_share.gif?raw=true)\n\nYes, this library is about a menu which can ... BOOM!  \nLooking for iOS version? Check [here](https://github.com/Nightonke/VHBoomMenuButton)\n\n# Guide\n\n[中文文档](https://github.com/Nightonke/BoomMenu/blob/master/README-ZH.md)  \n[Gradle \u0026 Maven](https://github.com/Nightonke/BoomMenu#gradle-and-maven)  \n[Note](https://github.com/Nightonke/BoomMenu#note)  \n[Demo](https://github.com/Nightonke/BoomMenu#demo)  \n\n###Usage\n\n1. [Easy to Use in 3 Steps](https://github.com/Nightonke/BoomMenu#easy-to-use-in-3-steps)\n2. [Use in Action Bar](https://github.com/Nightonke/BoomMenu#use-in-action-bar)\n3. [Use in Floating Action Button](https://github.com/Nightonke/BoomMenu#use-in-floating-action-button)\n4. [Use in List](https://github.com/Nightonke/BoomMenu#use-in-list)\n5. [Use in Share Style](https://github.com/Nightonke/BoomMenu#use-in-share-style)\n6. [Use with Builder](https://github.com/Nightonke/BoomMenu#use-with-builder)\n4. [Hamburger Button and Circle Button](https://github.com/Nightonke/BoomMenu#hamburger-button-and-circle-button)\n5. [Number of Sub Buttons](https://github.com/Nightonke/BoomMenu#number-of-sub-buttons)\n6. [Boom Types](https://github.com/Nightonke/BoomMenu#boom-types)\n7. [Place Types](https://github.com/Nightonke/BoomMenu#place-types)\n8. [Ease Types](https://github.com/Nightonke/BoomMenu#ease-types)\n9. [Boom Animation Duration](https://github.com/Nightonke/BoomMenu#boom-animation-duration)\n10. [Animation Start Delay](https://github.com/Nightonke/BoomMenu#animation-start-delay)\n11. [Rotation Degree](https://github.com/Nightonke/BoomMenu#rotation-degree)\n12. [Auto Dismiss](https://github.com/Nightonke/BoomMenu#auto-dismiss)\n13. [Cancelable](https://github.com/Nightonke/BoomMenu#cancelable)\n14. [Show Order and Hide Order](https://github.com/Nightonke/BoomMenu#show-order-and-hide-order)\n15. [Sub Buttons Click Listener](https://github.com/Nightonke/BoomMenu#sub-buttons-click-listener)\n16. [Animation Listener](https://github.com/Nightonke/BoomMenu#animation-listener)\n17. [Click Effects](https://github.com/Nightonke/BoomMenu#click-effects)\n18. [Sub Button Texts Color](https://github.com/Nightonke/BoomMenu#sub-button-texts-color)\n19. [Dim Types](https://github.com/Nightonke/BoomMenu#dim-types)\n20. [Shadow of Sub Buttons and Boom Button](https://github.com/Nightonke/BoomMenu#shadow-of-sub-buttons-and-boom-button)\n21. [Get States and Dismiss](https://github.com/Nightonke/BoomMenu#get-states-and-dismiss)\n22. [Get Sub Views of Sub Button](https://github.com/Nightonke/BoomMenu#get-sub-views-of-sub-button)\n\n[Versions](https://github.com/Nightonke/BoomMenu#versions)  \n[Todo](https://github.com/Nightonke/BoomMenu#todo)  \n[License](https://github.com/Nightonke/BoomMenu#license)  \n\n# Gradle and Maven\nJust add the \"compile 'com.nightonke:BoomMenu:1.0.9'\" in your build.gradle of your module.  \n```\ndependencies {\n    ...\n    compile 'com.nightonke:boommenu:1.0.9'\n    ...\n}\n```\nOr maven:\n```maven\n\u003cdependency\u003e\n  \u003cgroupId\u003ecom.nightonke\u003c/groupId\u003e\n  \u003cartifactId\u003eboommenu\u003c/artifactId\u003e\n  \u003cversion\u003e1.0.9\u003c/version\u003e\n  \u003ctype\u003epom\u003c/type\u003e\n\u003c/dependency\u003e\n```\n\n# Note\n1. I use the ShadowLayout from [dmytrodanylyk-ShadowLayout](https://github.com/dmytrodanylyk/shadow-layout) to create the shadow effect of the buttons.\n2. Boom menu button can be used in list since version 1.0.4.\n\n# Demo\nYou can check most of the options that you can set when using boom menu button in this demo. When you read the code of the demo, don't be afraid of the length of the code in MainActivity.class. Most of codes are for the logic of the RadioGroups.  \n![Boom V1.0.9](https://github.com/Nightonke/BoomMenu/blob/master/Apk/BoomMenu%20V1.0.9.png)  \nOr by link:  \n[Boom V1.0.9 in Github](https://github.com/Nightonke/BoomMenu/blob/master/Apk/BoomMenu%20V1.0.9.apk?raw=true)  \n[Boom V1.0.9 in Fir](http://fir.im/tv85)  \n\n# Usage\n\n### Easy to Use in 3 Steps\nCheck the code in [EaseUseActivity](https://github.com/Nightonke/BoomMenu/blob/master/app/src/main/java/com/nightonke/boommenusample/EasyUseActivity.java) and you will found out all to do are 3 steps:\n\n**1**.Add BoomMenuButton in xml file:\n```xml\n\u003ccom.nightonke.boommenu.BoomMenuButton\n    android:id=\"@+id/boom\"\n    android:layout_width=\"wrap_content\"\n    android:layout_height=\"wrap_content\"\n    android:layout_alignParentBottom=\"true\"\n    android:layout_alignParentRight=\"true\"\n    android:layout_alignParentEnd=\"true\"\n    android:layout_margin=\"20dp\"\n    app:boom_inActionBar=\"false\"\n    app:boom_button_color=\"@color/colorPrimary\"\n    app:boom_button_pressed_color=\"@color/colorPrimary\"\n    /\u003e\n```\n\n**2.**Get the view in xml in onCreate() method:\n```java\nboomMenuButton = (BoomMenuButton)findViewById(R.id.boom);\n```\n\n**3.**Initialize the boom menu button in the onWindowFocusChanged() method in activity:\n```java\n@Override\npublic void onWindowFocusChanged(boolean hasFocus) {\n    super.onWindowFocusChanged(hasFocus);\n    \n    boomMenuButton.init(\n            subButtonDrawables, // The drawables of images of sub buttons. Can not be null.\n            subButtonTexts,     // The texts of sub buttons, ok to be null.\n            subButtonColors,    // The colors of sub buttons, including pressed-state and normal-state.\n            ButtonType.HAM,     // The button type.\n            BoomType.PARABOLA,  // The boom type.\n            PlaceType.HAM_3_1,  // The place type.\n            null,               // Ease type to move the sub buttons when showing.\n            null,               // Ease type to scale the sub buttons when showing.\n            null,               // Ease type to rotate the sub buttons when showing.\n            null,               // Ease type to move the sub buttons when dismissing.\n            null,               // Ease type to scale the sub buttons when dismissing.\n            null,               // Ease type to rotate the sub buttons when dismissing.\n            null                // Rotation degree.\n    ); \n}\n```\n\n### Use in Action Bar\n\nTo add boom menu button in action bar just:\n\n**1**.Create your own action bar layout, custom_actionbar.xml:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cRelativeLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:background=\"@color/transparent\"\u003e\n\n    \u003ccom.nightonke.boommenu.BoomMenuButton\n        android:id=\"@+id/boom\"\n        android:layout_width=\"56dp\"\n        android:layout_height=\"match_parent\"\n        android:layout_alignParentStart=\"true\"\n        android:layout_alignParentLeft=\"true\"\n        android:layout_centerVertical=\"true\"\n        android:background=\"?android:actionBarItemBackground\"\n        app:boom_inActionBar=\"true\"\n        /\u003e\n\n    \u003cTextView\n        android:id=\"@+id/title_text\"\n        android:layout_width=\"wrap_content\"\n        android:layout_height=\"wrap_content\"\n        android:layout_centerVertical=\"true\"\n        android:textAllCaps=\"true\"\n        android:textAppearance=\"?android:attr/textAppearanceLarge\"\n        android:textColor=\"#fff\"\n        android:layout_toRightOf=\"@+id/boom\"\n        android:layout_toEndOf=\"@+id/boom\"\n        /\u003e\n\n\u003c/RelativeLayout\u003e\n```\n**2**.Custom the default action bar in onCreate() method:\n```java\n@Override\nprotected void onCreate(Bundle savedInstanceState) {\n    super.onCreate(savedInstanceState);\n    setContentView(R.layout.activity_main);\n\n    ActionBar mActionBar = getSupportActionBar();\n    mActionBar.setDisplayShowHomeEnabled(false);\n    mActionBar.setDisplayShowTitleEnabled(false);\n    LayoutInflater mInflater = LayoutInflater.from(this);\n\n    mCustomView = mInflater.inflate(R.layout.custom_actionbar, null);\n    TextView mTitleTextView = (TextView) mCustomView.findViewById(R.id.title_text);\n    mTitleTextView.setText(R.string.app_name);\n\n    boomMenuButtonInActionBar = (BoomMenuButton) mCustomView.findViewById(R.id.boom);\n    boomMenuButtonInActionBar.setOnSubButtonClickListener(this);\n    boomMenuButtonInActionBar.setAnimatorListener(this);\n\n    mActionBar.setCustomView(mCustomView);\n    mActionBar.setDisplayShowCustomEnabled(true);\n\n    ((Toolbar) mCustomView.getParent()).setContentInsetsAbsolute(0,0);\n}\n```\n**3**.Initialize the boom menu button in the onWindowFocusChanged() method in activity. Just like what we do in the step3 in [Easy to Use in 3 Steps](https://github.com/Nightonke/BoomMenu#easy-to-use-in-3-steps)\n\n###Use in Floating Action Button\n\nSimilar with above. But just add some params in xml:\n```xml\n\u003ccom.nightonke.boommenu.BoomMenuButton\n    android:id=\"@+id/boom\"\n    android:layout_width=\"wrap_content\"\n    android:layout_height=\"wrap_content\"\n    app:boom_inActionBar=\"false\"\n    app:boom_button_color=\"@color/colorPrimary\"\n    app:boom_button_pressed_color=\"@color/colorPrimary\"\n    /\u003e\n```\n\n| Param    | Type    | What It Does   |\n| ------------- |-------------| -----|\n| app:boom_inActionBar | boolean | true for boom menu button in action bar |\n| app:boom_inList | boolean | true for boom menu button in list |\n| app:boom_button_color | color | the color of the boom menu button, only work in floating action button |\n| app:boom_button_pressed_color | color | the color when pressing the boom menu button, only work when the ClickEffect is normal |\n\n### Use in List\n\nTo add boom menu button in list just:\n\n**1**.Create your list-item layout, notice that the app:boom_inList value should be true:\n```xml\n\u003c?xml version=\"1.0\" encoding=\"utf-8\"?\u003e\n\u003cLinearLayout xmlns:android=\"http://schemas.android.com/apk/res/android\"\n    xmlns:app=\"http://schemas.android.com/apk/res-auto\"\n    android:orientation=\"horizontal\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"match_parent\"\u003e\n\n    \u003cTextView\n        android:id=\"@+id/text_view\"\n        android:layout_width=\"0dp\"\n        android:layout_height=\"56dp\"\n        android:layout_weight=\"1\"\n        android:layout_marginStart=\"15dp\"\n        android:layout_marginLeft=\"15dp\"\n        android:gravity=\"center_vertical\"\n        /\u003e\n\n    \u003ccom.nightonke.boommenu.BoomMenuButton\n        android:id=\"@+id/boom_circle\"\n        android:layout_width=\"56dp\"\n        android:layout_height=\"match_parent\"\n        app:boom_inList=\"true\"\n        /\u003e\n\n    \u003ccom.nightonke.boommenu.BoomMenuButton\n        android:id=\"@+id/boom_ham\"\n        android:layout_width=\"56dp\"\n        android:layout_height=\"match_parent\"\n        app:boom_inList=\"true\"\n        /\u003e\n\n\u003c/LinearLayout\u003e\n```\n**2**.Init the boom menu button with delays in adapter:\n```java\n@Override\npublic View getView(int position, View convertView, final ViewGroup parent) {\n\n    ...\n\n    viewHolder.circleBoomMenuButton.postDelayed(new Runnable() {\n        @Override\n        public void run() {\n            viewHolder.circleBoomMenuButton.init(\n                    circleSubButtonDrawables, // The drawables of images of sub buttons. Can not be null.\n                    circleSubButtonTexts,     // The texts of sub buttons, ok to be null.\n                    subButtonColors,          // The colors of sub buttons, including pressed-state and normal-state.\n                    ButtonType.CIRCLE,        // The button type.\n                    BoomType.PARABOLA,        // The boom type.\n                    PlaceType.CIRCLE_3_1,     // The place type.\n                    null,                     // Ease type to move the sub buttons when showing.\n                    null,                     // Ease type to scale the sub buttons when showing.\n                    null,                     // Ease type to rotate the sub buttons when showing.\n                    null,                     // Ease type to move the sub buttons when dismissing.\n                    null,                     // Ease type to scale the sub buttons when dismissing.\n                    null,                     // Ease type to rotate the sub buttons when dismissing.\n                    null                      // Rotation degree.\n            );\n            viewHolder.hamBoomMenuButton.setSubButtonShadowOffset(\n                    Util.getInstance().dp2px(2), Util.getInstance().dp2px(2));\n            viewHolder.circleBoomMenuButton.setSubButtonShadowOffset(\n                    Util.getInstance().dp2px(2), Util.getInstance().dp2px(2));\n        }\n    }, 1);\n\n    ...\n    \n}\n```\nFor more information, please check [ListViewActivity.class](https://github.com/Nightonke/BoomMenu/blob/master/app/src/main/java/com/nightonke/boommenusample/ListViewActivity.java)\n\n### Use in Share Style\n\nShare style is the new place type of BMB in version 1.0.6. You can see the effect in the gifs. To use this, just change the place type as ```PlaceType.SHARE_X_X```. Just try it in the demo.\n\nYou can set the width of lines in share icon with ```setShareLineWidth(float width)``` and change the lines colors with ```setShareLine1Color(int color)``` and ```setShareLine2Color(int color)```.\n\nFor more information, please check [ShareActivity.class](https://github.com/Nightonke/BoomMenu/blob/master/app/src/main/java/com/nightonke/boommenusample/ShareActivity.java)\n\n### Use with Builder\n\nThanks @demolot to remind me of using Builder. Now you can use Builder to initialize the BMB more convenient.\n```\n@Override\npublic void onWindowFocusChanged(boolean hasFocus) {\n    super.onWindowFocusChanged(hasFocus);\n\n    // this is an example to show how to use the builder\n    new BoomMenuButton.Builder()\n            // set all sub buttons with subButtons method\n            //.subButtons(subButtonDrawables, subButtonColors, subButtonTexts)\n            // or add each sub button with addSubButton method\n            .addSubButton(this, R.drawable.boom, subButtonColors[0], \"BoomMenuButton\")\n            .addSubButton(this, R.drawable.java, subButtonColors[1], \"View source code\")\n            .addSubButton(this, R.drawable.github, subButtonColors[2], \"Follow me\")\n            .frames(80)\n            .duration(800)\n            .delay(100)\n            .showOrder(OrderType.RANDOM)\n            .hideOrder(OrderType.RANDOM)\n            .button(ButtonType.HAM)\n            .boom(BoomType.PARABOLA_2)\n            .place(PlaceType.HAM_3_1)\n            .showMoveEase(EaseType.EaseOutBack)\n            .hideMoveEase(EaseType.EaseOutCirc)\n            .showScaleEase(EaseType.EaseOutBack)\n            .hideScaleType(EaseType.EaseOutCirc)\n            .rotateDegree(720)\n            .showRotateEase(EaseType.EaseOutBack)\n            .hideRotateType(EaseType.Linear)\n            .autoDismiss(true)\n            .cancelable(true)\n            .dim(DimType.DIM_6)\n            .clickEffect(ClickEffectType.RIPPLE)\n            .boomButtonShadow(Util.getInstance().dp2px(2), Util.getInstance().dp2px(2))\n            .subButtonsShadow(Util.getInstance().dp2px(2), Util.getInstance().dp2px(2))\n            .subButtonTextColor(Color.BLACK)\n            .onBoomButtonBlick(null)\n            .animator(null)\n            .onSubButtonClick(null)\n            // this only work when the place type is SHARE_X_X\n            .shareStyle(0, 0, 0)\n            .init(boomMenuButton);\n}\n```\n\nFor more information, please check [BuilderActivity.class](https://github.com/Nightonke/BoomMenu/blob/master/app/src/main/java/com/nightonke/boommenusample/BuilderActivity.java)\n\n### Hamburger Button and Circle Button\nThere are 2 types of sub buttons in BMB(boom menu button). Hamburger and circle. You can use ```ButtonType.HAM``` and ```ButtonType.CIRCLE``` to initialize the BMB. \n\n### Number of Sub Buttons\nFor hamberger type, there are [1, 4] sub buttons. For circle type, there are [1, 9] sub buttons.\n\n### Boom Types\nThere are 5 boom types provided in this version. They are ```BoomType.LINE```, ```BoomType.PARABOLA_2``` , ```BoomType.HORIZONTAL_THROW```, ```BoomType.PARABOLA_2``` and ```BoomType.HORIZONTAL_THROW_2```. Just try them for fun in the demo. You can choose your favorite BoomType when initializing the BMB, or set it:\n```java\nsetBoomType(newBoomType);\n```\n\n### Place Types\nThere are 32 types for placing the sub buttons in BMB or in the screen. You can use ```PlaceType.CIRCLE_X_X``` and ```PlaceType.HAM_X_X``` (the former X is the number of sub buttons and the latter X is type number) to initialize BMB.  \n![PlayType 1~8](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/place_type_1.png)  \n![PlayType 9~16](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/place_type_2.png)  \n![PlayType 17~24](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/place_type_3.png)  \n![PlayType 25~32](https://github.com/Nightonke/BoomMenu/blob/master/Pictures/place_type_4.png)  \nFor more information for Place type, please check [PlaceType.class](https://github.com/Nightonke/BoomMenu/blob/master/boommenu/src/main/java/com/nightonke/boommenu/Types/PlaceType.java)\n\n### Ease Types\nYou can set 30 ease types for 6 part of animations when the BMB is showing or hiding. You can set the moving, scaling and rotating or showing and hiding animation when initializing the BMB, or set them to null to use the default ease types. And also, you can set 6 types by the setters:\n```java\nsetShowMoveEaseType(showMoveEaseType);\n\nsetShowScaleEaseType(showScaleEaseType);\n\nsetShowRotateEaseType(showRotateEaseType);\n\nsetHideMoveEaseType(hideMoveEaseType);\n\nsetHideScaleEaseType(hideScaleEaseType);\n\nsetHideRotateEaseType(hideRotateEaseType);\n```\nFor more ease types, you can check [Ease Type Package](https://github.com/Nightonke/BoomMenu/tree/master/boommenu/src/main/java/com/nightonke/boommenu/Eases). Or check the [library](https://github.com/Nightonke/WoWoViewPager#ease) that I made(This part is the same).\n\n### Boom Animation Duration\nSet the duration of the boom animation by ```setDuration(duration)``` (in ms). The default duration is 800ms.\n\n### Animation Start Delay\nUse ```setDelay(delay)``` to set the delay between each 2 sub buttons(in ms). For instance, if the delay is 0, then all the sub buttons will boom out at the same time. The default delay is 100ms.\n\n### Rotation Degree\nYou can set the degree to rotate the sub button. But only for circle types, I forbade applying rotation animation to hamburger types button because the shadow or a rolling rectangle is hard to display. The default rotation degree is 720. Set the degree when initializing BMB or use ```setRotateDegree(rotateDegree);```\n\n### Auto Dismiss\nWhen you click a sub button, the BMB will automatically hide all the sub buttons. If you want to stop this, just use ```setAutoDismiss(autoDismiss)``` to set autoDismiss to false.\n\n### Cancelable\nWhen click other place except the sub buttons, the BMB will hide all the sub buttons. You can use ```setCancelable(cancelable)``` to set the value to false. But remember to set one button to perform the cancelable job, otherwise the BMB will be uncancelable.\n\n### Show Order and Hide Order\nSet the order of showing or hiding sub buttons with ```OrderType.DEFAULT```, ```OrderType.REVERSE``` and ```OrderType.RANDOM```. Use ```setShowOrderType(showOrderType)``` and ```setHideOrderType(hideOrderType)``` to set these values.\n\n### Sub Buttons Click Listener\n```java\nboomMenuButton.setOnSubButtonClickListener(new BoomMenuButton.OnSubButtonClickListener() {\n    @Override\n    public void onClick(int buttonIndex) {\n        // return the index of the sub button clicked\n    }\n});\n```\n\n### Animation Listener\n```java\nboomInfo.setAnimatorListener(new BoomMenuButton.AnimatorListener() {\n    @Override\n    public void toShow() {\n        // the moment when the BMB is clicked and the showing animation is about to start\n    }\n\n    @Override\n    public void showing(float fraction) {\n        // the showing animation is playing, the fraction is the process of animation\n    }\n\n    @Override\n    public void showed() {\n        // the showing animation is just played \n    }\n\n    @Override\n    public void toHide() {\n        // the BMB is about to play the hiding animation\n    }\n\n    @Override\n    public void hiding(float fraction) {\n        // the hiding animation is playing\n    }\n\n    @Override\n    public void hided() {\n        // the hiding animation is just played\n    }\n});\n```\n\n### Click Effects\nUse ```setClickEffectType(clickEffectType)``` set click effect of all the buttons of BMB(including itself). Use ```ClickEffectType.RIPPLE``` to set the ripple effect(only work at or after Android 5.0) or ```ClickEffectType.NORMAL``` to set the normal effect of buttons.\n\n### Sub Button Texts Color\nUse ```setTextViewColor(int color)``` to set the color of all the textviews of sub buttons. Or use ```setTextViewColor(int[] colors)``` to set different color of textviews of sub buttons.\n\n### Dim Types\nYou can use DimType to control the dim degree when showing the sub buttons. You may notice that in the demo, when you click the floating action button, the background would not be dim. But, when you click the BMB in the action bar, the background would be dim. There are 10 values of dim degree:\n```java\npublic enum DimType {\n    DIM_0(Color.parseColor(\"#00000000\")),\n    DIM_1(Color.parseColor(\"#11000000\")),\n    DIM_2(Color.parseColor(\"#22000000\")),\n    DIM_3(Color.parseColor(\"#33000000\")),\n    DIM_4(Color.parseColor(\"#44000000\")),\n    DIM_5(Color.parseColor(\"#55000000\")),\n    DIM_6(Color.parseColor(\"#66000000\")),\n    DIM_7(Color.parseColor(\"#77000000\")),\n    DIM_8(Color.parseColor(\"#88000000\")),\n    DIM_9(Color.parseColor(\"#99000000\"));\n    \n    public int value;\n\n    DimType(int value) {\n        this.value = value;\n    }\n}\n```\nUse ```setDimType(DimType dimType)``` to set the dim degree of BMB. For instance, you can use ```boomMenuButton.setDimType(DimType.DIM_0);``` to keep the background light when showing sub buttons.\n\n### Shadow of Sub Buttons and Boom Button\nYou can set the offset of the shadow of sub buttons and the BMB. Use ```setSubButtonShadowOffset(float xOffset, float yOffset)``` (in pixel)to set the offset of sub buttons and ```setBoomButtonShadowOffset(float xOffset, float yOffset)``` to the BMB's.\n\n### Get States and Dismiss\nYou can get the current state of BMB with:\n```java\nboolean isClosed();\n\nboolean isClosing();\n\nboolean isOpen();\n\nboolean isOpening();\n```\n\nAnd use ```boolean dismiss()``` to force the BMB to play hiding animation. Returns true if the BMB is going to hide, returns false if the BMB cannot hide right now(because it is showing, hiding or hided).\n\n### Get Sub Views of Sub Button\nIf you wanna modify the sub views in the sub button. There are several methods to do that:\n```java\nImageView[] getImageViews();\n\nTextView[] getTextViews();\n```\n\n# Versions\n### 1.0.1  \nFirst version.\n### 1.0.2  \nFix a bug that now BMB should be able to used in version below lollipop.\n### 1.0.3\nFix the bug that's in Android 4.0, the image of the circle button is black.\n### 1.0.4\nNow the BMB can be used in list.\n### 1.0.5\nShare style.\n### 1.0.6\nSetters for share style.\n### 1.0.7\nThanks @hisham2007 to remind me of the RTL bug. Now BMB is able to support RTL mode.  \nThanks @demolot to remind me use the Builder to init the BMB. For more information, please check [Use with BMB](https://github.com/Nightonke/BoomMenu#use-with-builder).\n### 1.0.8\nTry to fix the memory optimization issue, but I'm not sure whether it works.\n### 1.0.9\nTry to fix the null-pointer exception.\n\n# Todo\n1. Particle effects are coming soon.\n2. ~~Make BMB ready for using in listview~~.  \n3. Blur background.\n\n# License\n\n    Copyright 2016 Nightonke\n\n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","funding_links":[],"categories":["Index `(light-weight pages)`","浮动菜单","Index","Java","Android","Libs"],"sub_categories":["\u003cA NAME=\"Widget\"\u003e\u003c/A\u003eWidget"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNightonke%2FBoomMenu","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FNightonke%2FBoomMenu","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FNightonke%2FBoomMenu/lists"}