SpringFabMenu

A menu of FloatingActionButton items, designed to be anchored on an AppBarLayout.

SpringFabMenu

Usage

  1. Edit your build.gradle to include the library and sync.
dependencies {
    implementation 'com.rany.albeg.wein:spring-fab-menu:1.0.1'
}

Or with Maven:

<dependency>
  <groupId>com.rany.albeg.wein</groupId>
  <artifactId>spring-fab-menu</artifactId>
  <version>1.0.0</version>
  <type>pom</type>
</dependency>
  1. Create a SpringFabMenu in XML:
    <com.rany.albeg.wein.springfabmenu.SpringFabMenu
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/app_bar"
        app:layout_anchorGravity="bottom|left"
        app:layout_behavior="@string/appbar_springfabmenu_behavior">

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab_1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:fabSize="mini"/>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab_2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:fabSize="mini"/>

        <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab_3"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            app:fabSize="mini"/>

    </com.rany.albeg.wein.springfabmenu.SpringFabMenu>

All available attributes ( following values are defaults ):

    <com.rany.albeg.wein.springfabmenu.SpringFabMenu
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_anchor="@id/app_bar"
        app:layout_anchorGravity="bottom|left"
        app:layout_behavior="@string/appbar_springfabmenu_behavior"
        app:sfm_collapse_duration="1000"
        app:sfm_collapse_on_item_selected="true"
        app:sfm_delay_expanding_menu_items="250"
        app:sfm_expand_duration="1000"
        app:sfm_expand_item_rotation_degrees="360"
        app:sfm_expand_menu_button_rotation_degrees="405"
        app:sfm_menu_button_color="@color/colorAccent"
        app:sfm_menu_button_ripple_color="#11000000"
        app:sfm_size_menu_button="normal"
        app:sfm_spacing_menu_items="15dp"
        app:sfm_src_icon="@drawable/ic_action_add">
  • app:sfm_collapse_duration : The time ( in ms ) it takes for the menu to collapse.
  • app:sfm_collapse_on_item_selected : Will the menu collapse when a menu-item is clicked.
  • app:sfm_delay_expanding_menu_items : Delay ( in ms ) between expanding menu items.
  • app:sfm_expand_duration : The time ( in ms ) it takes for the menu to expand.
  • app:sfm_expand_item_rotation_degrees : Degrees of rotation for expanding menu item.
  • app:sfm_expand_menu_button_rotation_degrees : Degrees of rotation for the menu button.
  • app:sfm_menu_button_color : The color of the menu button.
  • app:sfm_menu_button_ripple_color : The ripple color of the menu button.
  • app:sfm_size_menu_button : The size of the menu button.
  • app:sfm_spacing_menu_items : Spacing ( in dp ) between menu items.
  • app:sfm_src_icon : The icon for the menu button.

Note:
If you decide to anchor SpringFabMenu to an AppBarLayout, don't forget to apply a behavior to hide or show the menu:

app:layout_behavior="@string/appbar_springfabmenu_behavior"

  1. Listen for item clicks:
SpringFabMenu sfm = (SpringFabMenu)findViewById(R.id.sfm);
        
sfm.setOnSpringFabMenuItemClickListener(new SpringFabMenu.OnSpringFabMenuItemClickListener() {
	@Override
	public void onSpringFabMenuItemClick(View view) {
		switch (view.getId()) {
			case R.id.fab_share:
				break;
			case R.id.fab_send:
				break;
			case R.id.fab_delete:
		}
	}
});

GitHub