gitmyhub

material

Java ★ 6.0k updated 3y ago ▣ archived

A library to bring fully animated Material Design components to pre-Lolipop Android.

Android library that brings animated Material Design UI components, buttons, sliders, dialogs, progress bars, and more, to devices running Android 4.x that predate Google's native Material Design support.

JavaAndroidGradlesetup: easycomplexity 2/5

Material is an open-source Android library that brings animated Material Design components to older Android devices, specifically those running below Android 5.0 (also known as Lollipop). Google introduced Material Design with Android 5.0, along with a set of polished, animated UI components. Older Android versions had no built-in access to these components, so this library was created to fill that gap.

The library offers a wide range of UI building blocks: circular and linear progress indicators, raised and floating action buttons, checkboxes, radio buttons, toggle switches, sliders, dropdown spinners, text input fields, tab page indicators, snack bar notifications, standard dialogs, and bottom sheet dialogs. Each of these renders with the smooth animations that define the Material Design style.

To use it, a developer adds one dependency line to their project's Gradle build file. The library relies on a few standard Android support libraries, namely AppCompat, CardView, and RecyclerView, which most Android projects already include. Components are placed in layouts the same way as any standard Android widget, and they pick up color values from the app's existing theme settings. Detailed styling guidance lives in the project's GitHub wiki.

The library also supports dynamic theme switching, which means an app can change the color scheme of these components at runtime without reloading the screen. A demo app was previously available on Google Play to preview all the components in action.

Material was written by Rey Pham and is released under the Apache 2.0 license, allowing both commercial and open-source use without cost. The project accepts contributions via pull requests to the dev branch.

Where it fits