Skip to content

bowyer-app/FabTransitionLayout

Repository files navigation

FabTransitionLayout

Android Arsenal

Provides the Floating Action Button Transition as specified in the Material Design Guide in a simple library.

It is strongly inspired by fab-toolbar

bottomsheet toolbar CoordinatorLayout
bottomsheet bottomsheet CoordinatorLayout

Usage

build.gradle

repositories {
    jcenter()
}

dependencies {
    compile 'com.bowyer.app:fabtransitionlayout:0.4.0@aar'
}

Layout XML

BottomSheetLayout

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             xmlns:app="http://schemas.android.com/apk/res-auto"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
        >

    <com.github.ksoichiro.android.observablescrollview.ObservableListView
            android:id="@+id/list_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />

    <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginBottom="32dp"
            android:layout_marginRight="32dp"
            android:src="@drawable/ic_add_white_24dp"
            app:borderWidth="0dp"
            app:fabSize="normal"
            app:rippleColor="@color/primary"
            />

    <com.bowyer.app.fabtransitionlayout.BottomSheetLayout
            android:id="@+id/bottom_sheet"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_gravity="bottom"
            app:ft_container_gravity="center"
            app:ft_color="@color/primary">

        <ListView
                android:id="@+id/list_menu"
                android:background="@color/primary"
                android:divider="@null"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"/>
    </com.bowyer.app.fabtransitionlayout.BottomSheetLayout>

</FrameLayout>

FooterLayout

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
             xmlns:tools="http://schemas.android.com/tools"
             xmlns:app="http://schemas.android.com/apk/res-auto"
             android:layout_width="match_parent"
             android:layout_height="match_parent"
             tools:context=".MainActivity">

    <com.github.ksoichiro.android.observablescrollview.ObservableListView
            android:id="@+id/list_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            />

    <android.support.design.widget.FloatingActionButton
            android:id="@+id/fab"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|end"
            android:layout_marginBottom="32dp"
            android:layout_marginRight="32dp"
            android:src="@drawable/ic_add_white_24dp"
            app:borderWidth="0dp"
            app:fabSize="normal"
            app:rippleColor="@color/primary"
            />

    <com.bowyer.app.fabtransitionlayout.FooterLayout
            android:id="@+id/fabtoolbar"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom"
            app:ft_container_gravity="center"
            app:ft_color="@color/primary">
        <!--add your original layout-->
    </com.bowyer.app.fabtransitionlayout.FooterLayout>
</FrameLayout>

Set up

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initListView();
        //set floating button to FabToolbar
        mBottomSheetLayout.setFab(mFab);
    }

Show Hide

//expand FabToolbar
mBottomSheetLayout.expandFab();

//if mBottomSheetLayout is expand,mBottomSheetLayout contract. else fab slide out.
mBottomSheetLayout.slideOutFab();

//fab slide in
mBottomSheetLayout.slideInFab();

Credits

This library use following libraries.

Code Style

Follow SquareAndroid.

Feature

  • A floating action button transforming into a single sheet of material

License

Copyright (c) 2015 Bowyer
Released under the MIT license
http://opensource.org/licenses/mit-license.php