An Android library aimed to get the beautiful CardViews that Google shows at its official design specifications

Overview

MaterialList Build Status Maven Central Android Arsenal

Discontinued

This library will not receive any updates, as I do not have the time or knowledge to improve it.

If anyone forks it and wants to mantain it, please let me know and I will add a link to the mantained version.


Warning!

MaterialList v3 changes the way Cards are built, and its API is not backwards compatible. Read the changes and learn how to build your cards in the Wiki.

Also the v3 version should be considered experimental

MaterialList is an Android library created to help all Android developers get the beautiful CardViews that Google shows at its official design specifications.

Provided as a RecyclerView extension, it can receive a list of Cards (stored in a CardList, provided by the library) and show them accordingly to the android style and design patterns.

It also has been developed while keeping extensibility in mind, which means that you are able to create your own card layouts and add them to the CardList without any pain (see examples below).

Cards provided

These are the cards that the library offers by default:

SmallImageCard BasicImageButtonsCard BigImageCard BigImageButtonsCard BasicButtonsCard WelcomeCard BasicListCard

For further documentation, you can check the Wiki page.

How to use

The MaterialListView is based on a RecyclerView. It acts just as a normal ListView, but offering options for interacting with your cards. It can display the cards in a single or multiple columns.

1. Step: Declare a MaterialListView in your layout

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin">

    <com.dexafree.materialList.view.MaterialListView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/material_listview"/>

</RelativeLayout>

There are also some additional attributes to define the column count of the MaterialListView. Therefore you need

xmlns:app="http://schemas.android.com/apk/res-auto"

You can use the column_count attribute for using a fixed column count in portrait and landscape mode.

    app:column_count="1"

Or you can use the column_count_portrait and column_count_landscape attributes.

    app:column_count_portrait="1"
    app:column_count_landscape="2"

2. Step: Find your MaterialListView in code

MaterialListView mListView = (MaterialListView) findViewById(R.id.material_listview);

3. Step: Add Cards to the MaterialListView

Card card = new Card.Builder(this)
                            .setTag("BASIC_IMAGE_BUTTONS_CARD")
                            .withProvider(BasicImageButtonsCardProvider.class)
                            .setTitle("I'm new")
                            .setDescription("I've been generated on runtime!")
                            .setDrawable(R.drawable.dog)
                            .endConfig()
                            .build()

mListView.getAdapter.add(card);

There are also some Cards that may show a Divider between the content and the buttons. For further reference, read the Wiki page

Clicking the cards

As the project was migrated from ListView to RecyclerView, it did not offer the native OnItemClickListener / OnItemLongClickListener methods that can be accessed from ListView.

Since version 2.4.0, you can add your listeners

mListView.addOnItemTouchListener(new RecyclerItemClickListener.OnItemClickListener() {

    @Override
    public void onItemClick(Card card, int position) {
        Log.d("CARD_TYPE", card.getTag().toString());
    }

    @Override
    public void onItemLongClick(Card card, int position) {
        Log.d("LONG_CLICK", card.getTag().toString());
    }
});

Check also the Recovering data from the cards section in order to be able to recover the Card's content

Dismissing the cards

One of the features I've always loved is the SwipeToDismiss gesture. MaterialList brings you this feature, and in order to set a callback to the dismissing action, you only need to create your own OnDismissCallback:

mListView.setOnDismissCallback(new OnDismissCallback() {
    @Override
    public void onDismiss(Card card, int position) {
        // Do whatever you want here
    }
});

You will also be able to decide if a card should be dismissible or not, just by calling card.setDismissible(true).

Check also the Recovering data from the cards section in order to be able to recover the Card's content

Recovering data from the cards

You can check the Wiki page in order to get more information about the tag system.

Animations

Since version 2.0, MaterialList provides animations, in order to enhance cards apparitions.

You can implement them just by calling the setItemAnimator(RecyclerView.ItemAnimator animator) method.

There also exists an extensive animation library for the RecyclerView from wasabeef.

Extensibility

MaterialList was created with extensibility in mind, so it makes things easy for you if you want to create your own Cards.

For learning how to do it, check the Wiki page

Compatibility

MaterialList is compatible with Android 2.3+

How to use

In order to use MaterialList, you can either clone the project and import it as a module, or you can add this line to your build.gradle script:

dependencies {
    ...
    compile 'com.github.dexafree:materiallist:3.2.2'
}

Sample

You can clone the project and compile it yourself (it includes a sample), or you can check it out already compiled at Google Play

Google Play

Notice that it might not be the last version

Collaborations

  • Fabio Hellmann: Great pull request that added MaterialStaggeredGridView, animations, and refactored a lot of code. Thank you very much, really! Also ported MaterialListView from ListView to RecyclerView.
  • Ricardo Romero: Integrating Picasso to the library

Credits

  • Jake Wharton: SwipeToDismissNOA
  • Romain Guy: The sand picture provided as example was taken from one of his projects

License

MaterialList is licensed under MIT License, which means that is Open Source and free to use and modify, you just have to.

The MIT License (MIT)

Copyright (c) 2014 Dexafree

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
Comments
  • Code Refactoring, Simplifications, Patterns, Annotations, Fixed Issues

    Code Refactoring, Simplifications, Patterns, Annotations, Fixed Issues

    This PR should make the coding much easier for every developer and reduces the Library size.

    What I've done at all:

    • Builder Pattern: to easily create new Cards
    • Observer Pattern: to replace the Eventbus Otto with
    • Library shrinking: by replacing Libraries with an easy java implementation
    • Java Doc: added to understand the code much easier and faster

    Fixed issues: #92 With the Renderer principle it should be easy to create a Card programmaticly. #77 Should be fixed with Observer Pattern

    Maybe some others are also fixed with this PR...

    opened by FHellmann 21
  • Text is always white

    Text is always white

    When I use BigImageCard the description text is white, when I use SmallImageCard then the title is white, so the text is not visible to the user.

    Any fix?

    opened by theblixguy 14
  • UNEXPECTED TOP-LEVEL EXCEPTION:

    UNEXPECTED TOP-LEVEL EXCEPTION:

    After upgrading the library to 2.0.0 I am getting multiple dex libraries issue:

    UNEXPECTED TOP-LEVEL EXCEPTION:
    com.android.dex.DexException: Multiple dex files define Lcom/nhaarman/listviewanimations/util/Swappable;
        at com.android.dx.merge.DexMerger.readSortableTypes(DexMerger.java:596)
        at com.android.dx.merge.DexMerger.getSortedTypes(DexMerger.java:554)
        at com.android.dx.merge.DexMerger.mergeClassDefs(DexMerger.java:535)
        at com.android.dx.merge.DexMerger.mergeDexes(DexMerger.java:171)
        at com.android.dx.merge.DexMerger.merge(DexMerger.java:189)
        at com.android.dx.command.dexer.Main.mergeLibraryDexBuffers(Main.java:454)
        at com.android.dx.command.dexer.Main.runMonoDex(Main.java:303)
        at com.android.dx.command.dexer.Main.run(Main.java:246)
        at com.android.dx.command.dexer.Main.main(Main.java:215)
        at com.android.dx.command.Main.main(Main.java:106)
    
    opened by tarunmahe 12
  • MateriaList with Picasso

    MateriaList with Picasso

    Hi! I am using this awesome library and I am trying to mix with picasso, but I need a ImageView to do this, and I do not know how do it, I tried to inflate the layout but it does not work. So I wonder if could you tell me how can I mix them, maybe if there was a "getImageView()" or something could it be more easy.

    Thanks you, so much!

    opened by RicardoRB 10
  • Trying to use 2.1.0

    Trying to use 2.1.0

    Okay I see that you updated it, but none of the sample cards are appearing. In the README you say to import the module samplecards and compile. Where is that? I thought it was supposed to all be included in the library

    Thanks!

    PS. Really awesome work

    opened by drabelo 9
  • Bugs in MaterialListAdapter

    Bugs in MaterialListAdapter

    There is a bug, that the MaterialList can not be cleared.

    I think the issue can resolved by removing the incremtation of index.

        public void clear() {
            while(!mCardList.isEmpty()) {
                remove(mCardList.get(0), false);
            }
        }
    

    Also is a bug in the MaterialListAdapter.getCard(int). The minimum position can be 0 but if the method is called with 0 as parameter, it returns null. There for need to ask position is >= 0 not only > 0.

        public Card getCard(int position) {
            if(position >= 0 && position < mCardList.size()) {
                return mCardList.get(position);
            }
            return null;
        }
    
    opened by FHellmann 8
  • OnItemClickListeners implementation

    OnItemClickListeners implementation

    Hi dexafree i'm using your nice library and i am missing the onitemclick listener. Is there a way to implement it ou it is plan for the next release ?

    looking forward to hearing from you.

    regards,

    opened by konigsoft 7
  • Welcome Card Strange Behaviour

    Welcome Card Strange Behaviour

    I am using 2.0.1 version of your the library and have encountered a very strange behaviour when adding welcome cards.

    I am creating a new welcome card using:

        SimpleCard card;
         card = new WelcomeCard(this);
        card.setTitle("Welcome!");
        card.setDescription("If you're a new user, we recommend you take the tutorial.");
        ((WelcomeCard) card).setSubtitle("Take a quick tour ?");
        ((WelcomeCard) card).setButtonText("Okay!");
        ((WelcomeCard) card).setBackgroundColorRes(R.color.primary);
        ((WelcomeCard) card).setDividerColor(getResources().getColor(R.color.primary_dark));
        ((WelcomeCard) card).setDescriptionColor(getResources().getColor(R.color.icons));
        card.setDismissible(true);
        ((WelcomeCard) card).setOnButtonPressedListener(new OnButtonPressListener() {
            @Override
            public void onButtonPressedListener(View view, Card card) {
                card.dismiss();
                Toast.makeText(MainActivity.this,"Coming Soon", Toast.LENGTH_LONG).show();
            }
    });
    

    I am adding it to mListView using:

    mListView.add(card);
    

    Very strangely,

    • Two welcome cards get added to my view instead of one.
    • I can't seem to be able to change the color of description text.

    I have attached a screenshot for reference. device-2015-01-22-042454

    opened by stripathi669 7
  • Possible New Feature: Identifiers Tags for cards

    Possible New Feature: Identifiers Tags for cards

    In a scenario where cards are being used a templates for large amount of new content, it is important to have some identifier ID for each card instance apart from the just index position.

    Though this small feature is relatively simple to add, but it has great utility.

    enhancement 
    opened by stripathi669 6
  • Exception on rotation

    Exception on rotation

    When I rotate my device I received the following Exception:

    Process: de.fh.budgetkeeper.debug, PID: 1353
        java.lang.RuntimeException: Unable to start activity ComponentInfo{de.fh.budgetkeeper.debug/de.fh.budgetkeeper.ui.MainActivity}: java.lang.ClassCastException: android.widget.AbsListView$SavedState cannot be cast to com.etsy.android.grid.StaggeredGridView$GridListSavedState
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738)
                at android.app.ActivityThread.access$900(ActivityThread.java:135)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:136)
                at android.app.ActivityThread.main(ActivityThread.java:5017)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                at dalvik.system.NativeStart.main(Native Method)
         Caused by: java.lang.ClassCastException: android.widget.AbsListView$SavedState cannot be cast to com.etsy.android.grid.StaggeredGridView$GridListSavedState
                at com.etsy.android.grid.StaggeredGridView.onRestoreInstanceState(StaggeredGridView.java:1292)
                at android.view.View.dispatchRestoreInstanceState(View.java:12799)
                at android.view.ViewGroup.dispatchThawSelfOnly(ViewGroup.java:2657)
                at android.widget.AdapterView.dispatchRestoreInstanceState(AdapterView.java:791)
                at android.view.ViewGroup.dispatchRestoreInstanceState(ViewGroup.java:2643)
                at android.view.View.restoreHierarchyState(View.java:12777)
                at android.support.v4.app.Fragment.restoreViewState(Fragment.java:465)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:969)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
                at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
                at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1917)
                at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:544)
                at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1171)
                at android.app.Activity.performStart(Activity.java:5241)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2168)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2245)
                at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3738)
                at android.app.ActivityThread.access$900(ActivityThread.java:135)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1202)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:136)
                at android.app.ActivityThread.main(ActivityThread.java:5017)
                at java.lang.reflect.Method.invokeNative(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:515)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
                at dalvik.system.NativeStart.main(Native Method)
    

    It seems to come from the saving of the list (MaterialListView) SavedState which will be given to the grid (MaterialStaggeredGridView) and can not be converted to GridListSavedState....?

    opened by FHellmann 6
  • version 2.0.1 error

    version 2.0.1 error

    I got this error with this version. I cant compile.

    Note: there were 19 duplicate class definitions. (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass) Warning:com.dexafree.materialList.model.BasicButtonsCard: can't find superclass or interface com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.BasicImageButtonsCard: can't find superclass or interface com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.BigImageButtonsCard: can't find superclass or interface com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.BigImageCard: can't find superclass or interface com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.SmallImageCard: can't find superclass or interface com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.WelcomeCard: can't find superclass or interface com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.BasicButtonsCard: can't find referenced class com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.BasicImageButtonsCard: can't find referenced class com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.BigImageButtonsCard: can't find referenced class com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.BigImageCard: can't find referenced class com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.CardList: can't find referenced class com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.GridItemView: can't find referenced class com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.SmallImageCard: can't find referenced class com.dexafree.materialList.model.Card Warning:com.dexafree.materialList.model.WelcomeCard: can't find referenced class com.dexafree.materialList.model.Card Warning:there were 21 unresolved references to classes or interfaces. You may need to add missing library jars or update their versions. If your code works fine without the missing classes, you can suppress the warnings with '-dontwarn' options. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass) :app:proguardDebug FAILED Error:Execution failed for task ':app:proguardDebug'.

    java.io.IOException: Please correct the above warnings first.

    opened by csechuan 6
  • How to get card details using mListView object ?

    How to get card details using mListView object ?

                           mListView.getAdapter().addAtStart(new Card.Builder(this)
                            .setTag("BASIC_IMAGE_BUTTONS_CARD" )
                            .setDismissible()
                            .withProvider(new CardProvider())
                            .setLayout(R.layout.card_new)
                                      ddAction(R.id.left_text_button, new TextViewAction(this)
                                    .setText("left")
                                    .setTextResourceColor(R.color.black_button))
                            .addAction(R.id.right_text_button, new TextViewAction(SimManagment.this)
                                    .setText("right")
                                    .setTextResourceColor(R.color.orange_button))
                            .addAction(R.id.three_text_button, new TextViewAction(SimManagment.this)
                                    .setText("right")
                                    .setTextResourceColor(R.color.orange_button))
                            .endConfig()
                            .build());
    

    XML

                <?xml version="1.0" encoding="utf-8"?>
               <com.dexafree.materialList.card.CardLayout
                 xmlns:android="http://schemas.android.com/apk/res/android"
                        xmlns:tools="http://schemas.android.com/tools"
                                style="@style/MainLayout">
    
    <android.support.v7.widget.CardView
        xmlns:card_view="http://schemas.android.com/apk/res-auto"
        android:id="@+id/cardView"
        style="@style/Material_Card_View"
        card_view:cardCornerRadius="@dimen/card_corner_radius"
        card_view:cardElevation="@dimen/card_elevation">
        <LinearLayout
            android:orientation="horizontal"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content">
    
    
            <LinearLayout
                android:orientation="vertical"
                android:layout_width="match_parent"
                android:layout_height="match_parent">
    
                <EditText style="@style/Material_Action"
                    android:id="@+id/mobile_no"
                    android:inputType="number"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:hint="Mobile Number"
                    tools:text="my"
                   />
                <EditText style="@style/Material_Action"
                    android:id="@+id/sim_no"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:inputType="number"
                    tools:text="Action 1"
                    android:hint="Sim Number"
                    />
    
    
                <LinearLayout
                    android:orientation="horizontal"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:paddingLeft="8dp">
    
                    <TextView style="@style/Material_Action"
                        android:id="@+id/left_text_button"
                        tools:text="Action 1"/>
    
                    <TextView style="@style/Material_Action"
                        android:id="@+id/right_text_button"
                        tools:text="Action 2"/>
                    <TextView style="@style/Material_Action"
                        android:id="@+id/three_text_button"
                        tools:text="Action 2"/>
                </LinearLayout>
    
            </LinearLayout>
        </LinearLayout>
    
    </android.support.v7.widget.CardView>
    
      </com.dexafree.materialList.card.CardLayout>
    

    I have add two text box inside the card view , when Click the that card How can I get the two values ? Can any one please help ?

    opened by kalanidhiSBU 0
  • Space between items when scrooling

    Space between items when scrooling

    Hello,

    Im using the v2 version of the library (i cant update to v3 because there are incompatible and i have a lot of work with v2), i have a problem with MaterialListView and cards.

    On the list there are a big space betwen items, this is an example:

    screenshot_1476349323

    And there is my xml code, im ussing SmallImageCard

    `

    <ProgressBar
        android:id="@+id/barraProgresoEmpleados"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        style="@android:style/Widget.Holo.ProgressBar.Large"
        android:layout_marginRight="5dp"
        android:layout_centerVertical="true"
        android:layout_centerHorizontal="true" />
    <!--<TextView-->
        <!--android:id="@+id/sinEmpleadosTV"-->
        <!--android:layout_width="wrap_content"-->
        <!--android:layout_height="wrap_content"-->
        <!--android:layout_alignParentTop="true"-->
        <!--android:layout_centerHorizontal="true"-->
        <!--android:textColor="@color/red"-->
        <!--android:text="Sin empleados disponibles"-->
        <!--android:visibility="gone"/>-->
    <com.beardedhen.androidbootstrap.BootstrapLabel
        android:id="@+id/sinEmpleadosTV"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/barraProgresoClientes"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_gravity="center"
        android:visibility="gone"
        bootstrap:bootstrapBrand="danger"
        bootstrap:roundedCorners="true"
        bootstrap:bootstrapText="{fa_exclamation_circle}   Sin empleados disponibles"
        />
    
        <com.dexafree.materialList.view.MaterialListView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:id="@+id/material_listview"
            android:visibility="gone"
            android:scrollbars="vertical"
            android:dividerHeight="1dp"/>
    
    `

    Thanks you, regards!

    opened by ghost 3
  • Example provided in README doesn't work.

    Example provided in README doesn't work.

    The example provided in the README does not compile. Where as the example provided in the docs works. I have merely just replaced the example in the README file with the example mentioned in the docs!

    opened by mayank26saxena 0
  • Can't add more than 1 card

    Can't add more than 1 card

    Hi,

    I have implemented custom cards with custom providers. But, the UI is not showing more than 1 card either with same card object being added twice or different card with different provider

    opened by auror 0
Releases(v3.2.2)
Owner
null
Default colors and dimens per Material Design guidelines and Android Design guidelines inside one library.

Material Design Dimens Default colors and dimens per Material Design guidelines and Android Design guidelines inside one library. Dimens Pattern: R.di

Dmitry Malkovich 1.4k Jan 3, 2023
An android application that allows its users to download and set different images as their wallpapers either on the home screen, lock screen or both.

UHD Wallpapers This an android application show cases different sets of images from unsplash and allows its users to download and set them as wallpape

null 2 Oct 31, 2022
Material Design icons by Google

Material design icons Material design icons is the official icon set from Google. The icons are designed under the material design guidelines. 4.0.0 U

Google 47.1k Jan 9, 2023
📱Android Library to implement animated, 😍beautiful, 🎨stylish Material Dialog in android apps easily.

Material Dialogs for Android ?? ?? Android Library to implement animated, ?? beautiful, ?? stylish Material Dialog in android apps easily. 1. Material

Shreyas Patil 875 Dec 28, 2022
😍 A beautiful, fluid, and extensible dialogs API for Kotlin & Android.

Material Dialogs View Releases and Changelogs Modules The core module is the fundamental module that you need in order to use this library. The others

Aidan Follestad 19.5k Dec 31, 2022
MaterialPickers-in-android - A simple android project that shows how to create material pickers for date and time

MaterialPickers-in-android A simple android project that shows how to create mat

Segun Francis 2 Apr 28, 2022
A beautiful notes app

Background Although there are many notes apps out there, they're all hideous, glitchy, low quality or all 3 at the same time. Maybe the developer view

Om Godse 1k Jan 7, 2023
A library to bring fully animated Material Design components to pre-Lolipop Android.

Material MaterialLibrary is an Open Source Android library that back-port Material Design components to pre-Lolipop Android. MaterialLibrary's origina

Rey Pham 6k Dec 21, 2022
The flexible, easy to use, all in one drawer library for your Android project. Now brand new with material 2 design.

MaterialDrawer ... the flexible, easy to use, all in one drawer library for your Android project. What's included ?? • Setup ??️ • Migration Guide ??

Mike Penz 11.6k Dec 27, 2022
A library support form with material design, construct same with Android UI Framework

SwingUI A slight Java Swing library support form with material design, construct same with Android UI Framework writen in Kotlin Supported: 1. Screen:

Cuong V. Nguyen 3 Jul 20, 2021
A Material Design ViewPager easy to use library

MaterialViewPager Material Design ViewPager easy to use library Sample And have a look on a sample Youtube Video : Youtube Link Download In your modul

Florent CHAMPIGNY 8.2k Jan 1, 2023
Floating Action Button for Android based on Material Design specification

FloatingActionButton Yet another library for drawing Material Design promoted actions. Features Support for normal 56dp and mini 40dp buttons. Customi

Zendesk 6.4k Dec 26, 2022
Implementation of Ripple effect from Material Design for Android API 9+

RippleEffect ExpandableLayout provides an easy way to create a view called header with an expandable view. Both view are external layout to allow a ma

Robin Chutaux 4.9k Dec 30, 2022
Material Design implementation for Android 4.0+. Shadows, ripples, vectors, fonts, animations, widgets, rounded corners and more.

Carbon Material Design implementation for Android 4.0 and newer. This is not the exact copy of the Lollipop's API and features. It's a custom implemen

null 3k Jan 9, 2023
Android drawer icon with material design animation

LDrawer Android drawer icon with material design animation Note Basically same as appcompat_v7 version 21, you can use appcompat_v7 compile 'com.andro

Hasan Keklik 1.4k Dec 25, 2022
Android Sample Project with Material Design and Toolbar.

AndroidMaterialDesignToolbar -- PROJECT IS NOT SUPPORTED Android Sample Project with Material Design and Toolbar. Project use Appcompat library for ma

kemal selim tekinarslan 713 Nov 11, 2022
Android drawer icon with material design animation

LDrawer Android drawer icon with material design animation Note Basically same as appcompat_v7 version 21, you can use appcompat_v7 compile 'com.andro

Hasan Keklik 1.4k Dec 25, 2022
Floating Action Button for Android based on Material Design specification

FloatingActionButton Yet another library for drawing Material Design promoted actions. Features Support for normal 56dp and mini 40dp buttons. Customi

Zendesk 6.4k Jan 3, 2023
Android Material Design Components

Android-Material-Design-Components Material design is a comprehensive guide for visual, motion, and interaction design across platforms and devices. G

Velmurugan Murugesan 3 Jun 10, 2022