A Material design back port of Android's CalendarView

Overview

Material Calendar View

Android Arsenal Travis branch

A Material design back port of Android's CalendarView. The goal is to have a Material look and feel, rather than 100% parity with the platform's implementation.

Demo Screen Capture

Installation

Step 1. Add the JitPack repository to your build file

allprojects {
  repositories {
    ...
    maven { url 'https://jitpack.io' }
  }
}

Step 2. Add the dependency

dependencies {
  implementation 'com.github.prolificinteractive:material-calendarview:${version}'
}

Usage

  1. Add MaterialCalendarView into your layouts or view hierarchy.
  2. Set a OnDateSelectedListener or call MaterialCalendarView.getSelectedDates() when you need it.

Javadoc Available Here

Example:

<com.prolificinteractive.materialcalendarview.MaterialCalendarView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/calendarView"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:mcv_showOtherDates="all"
    app:mcv_selectionColor="#00F"
    />

Documentation

Make sure to check all the documentation available here.

Customization

One of the aims of this library is to be customizable. The many options include:

Events, Highlighting, Custom Selectors, and More!

All of this and more can be done via the decorator api. Please check out the decorator documentation.

Recent Changes

Major Change in 2.0

Material CalendarView 2.0 comes in with a major change into the core of it's API, we transitioned from using java.util.Calendar to java.time.LocalDate. Also that should not impact the public api (we are still using CalendarDay), both Calendar and LocalDate function a little bit differently. One example of that: Months are now indexed from 1 (January) to 12 (December). You can access from the LocalDate from CalendarDay using getDate().

Major Change in 1.6.0

Also this release doesn't have any break changes, it provides significant improvements to the widget. More customization have been added for the user (custom fonts, long click listener, show/hide weekdays) as well as various fixes, improvements to the sample app, and general cleanup. Make sure to check the CHANGELOG and the release section for more details.

Major Change in 1.5.0

We recently updated to the latest gradle and decided to move over our libraries to the hosting service Jitpack. Please refer to the installation section for more details.

Major Change in 1.4.0

  • Breaking Change: setFirstDayOfWeek, setMin/MaxDate, and setCalendarDisplayMode are moved to a State object. This was necessary because it was unclear that these were not simple setters--individually, they were side effecting and triggered full adapter/date range recalculations. Typical usage of the view involves setting all these invariants up front during onCreate and it was unknown to the user that setting all 4 of these would create a lot of waste. Not to mention certain things were side effecting--some would reset the current day or selected date. As a result, the same 4 methods called in a different order could result in a different state, which is bad.

    For most cases you will simply need to replace setting those invariants with:

    mcv.state().edit()
      .setFirstDayOfWeek(Calendar.WEDNESDAY)
      .setMinimumDate(CalendarDay.from(2016, 4, 3))
      .setMaximumDate(CalendarDay.from(2016, 5, 12))
      .setCalendarDisplayMode(CalendarMode.WEEKS)
      .commit();

    mcv.state().edit() will retain previously set values; mcv.newState() will create a new state using default values. Calling commit will trigger the rebuild of adapters and date ranges. It is recommended these state changes occur as the first modification to MCV (before configuring anything else like current date or selected date); we make no guarantee those modifications will be retained when the state is modified.

    See CUSTOMIZATION_BUILDER for usage details.

  • New: setSelectionMode(SELECTION_MODE_RANGE) was added to allow 2 dates to be selected and have the entire range of dates selected. Much thanks to papageorgiouk for his work on this feature.

See other changes in the CHANGELOG.

Contributing

Would you like to contribute? Fork us and send a pull request! Be sure to checkout our issues first.

License

Material Calendar View is Copyright (c) 2018 Prolific Interactive. It may be redistributed under the terms specified in the LICENSE file.

Maintainers

prolific

Material Calendar View is maintained and funded by Prolific Interactive. The names and logos are trademarks of Prolific Interactive.

Comments
  • Horizontal tile spacing

    Horizontal tile spacing

    Hi @dandc87, I just started experimenting with the library (versions 0.8.1 and 1.0.0-beta1) and I think it's awesome! I'm wondering if it's possible to set the tile size and still make the view fill all of the horizontal space. Currently, if I set the tile size to something smaller than the default 44dp, the tiles group together in the center, leaving padding on the left and right sides of the calendar. Basically, I'm trying to reduce the overall height of the calendar view, while still making it fill the horizontal space of the screen.

    This is what I'm doing in XML:

    <com.prolificinteractive.materialcalendarview.MaterialCalendarView
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />
    

    And then in Java:

    calendarView.setTileSizeDp(38);
    

    Here's a screenshot of what the calendar looks like:

    screenshot_2015-09-20-17-54-19

    And here's a screenshot of roughly what I'm going for:

    screenshot_2015-09-20-18-00-00

    Thanks in advance! -Dan

    enhancement 
    opened by dsn5ft 25
  • How can i display Week number

    How can i display Week number

    I want to implement to display week number on top of date number or lefts side of calendar. First approach(display on top of number): - i couldn`t give various style to week number and date number.Both of them has the same last style 1111

    Second approach - dont have any idea yet

    http://sanziro.com/wp-content/uploads/2015/07/display-week-number-in-calendar-app-for-ios.png

    opened by nAkhmedov 18
  • setCalendarDisplayMode(CalendarMode.WEEKS) wrong week when Date selected

    setCalendarDisplayMode(CalendarMode.WEEKS) wrong week when Date selected

    When you "collapse" the Calendar with .setCalendarDisplayMode(CalendarMode.WEEKS), the week displayed is one week to early, when using Monday as first day of the week. (Only working when i select the Sunday) [BUG]

    bug 
    opened by ghost 18
  • Circle Background is too big

    Circle Background is too big

    Hi I am trying to reduce the circle background of a selected date. The gray circle of the date selected by default is getting too big, can i decrease the circle size of the selected day?

    Any help would be appreciated ThankYou

    opened by Greenikl 15
  • ClassCastException - WeekView to MonthView

    ClassCastException - WeekView to MonthView

    I am using this calendar inside row on RecyclerView. I am setting calendar's display mode to CalendarMode.WEEKS. This row is on top of list.

    I scroll down the list and then on the top of the list, then there is class cast exception.

    I am using view holder pattern. Imo this is viewholder fault.

    java.lang.ClassCastException: com.prolificinteractive.materialcalendarview.WeekView cannot be cast to com.prolificinteractive.materialcalendarview.MonthView
                                                                                    at com.prolificinteractive.materialcalendarview.CalendarPagerAdapter.getItemPosition(CalendarPagerAdapter.java:125)
                                                                                    at com.prolificinteractive.materialcalendarview.WeekPagerAdapter.getItemPosition(WeekPagerAdapter.java:9) 
    

    Any solutions?

    bug 
    opened by kostaniakm 12
  • Selecting a range of dates

    Selecting a range of dates

    Greetings, how can I select a range of dates by clicking the first and last date? Example: I want to mark an event from jan 1 to fab 10 by clicking in jan 1 and then fabruary 10. Thanks

    enhancement 
    opened by curliq 11
  • How to DisableDecorator to one days of week?

    How to DisableDecorator to one days of week?

    I need DisableDecorator to one days of week. for example disale Decorator for all Monday days. How to do it using method

       private class PrimeDayDisableDecorator implements DayViewDecorator {
    
       }  
    

    thanks

    opened by erioana 11
  • Option to disable swiping between months

    Option to disable swiping between months

    I really like the library, but I have a simple UX issue when I try to integrate it in my application. I would like to display the calendar in a viewpager, so the swiping is used to change pages. But this lib uses the swipe gesture to change between months, so it currently behaves really odd. The arrows at the top would be sufficent to change months in my use case, so could you provide an option (either from code or from xml) to disable the lib's listening to swipe gestures?

    Thank you in advance.

    bug enhancement 
    opened by balazsgerlei 11
  • (solved) How to add multiple event dots per day

    (solved) How to add multiple event dots per day

    [Fairly new ti github, if this is not the correct way of spreading knowledge, do tell]

    First off, you need a custom DotSpan class, which is just ever so slightly altered:

    public class CustmMultipleDotSpan implements LineBackgroundSpan {
    
    
        private final float radius;
        private int[] color = new int[0];
    
    
        public CustmMultipleDotSpan() {
            this.radius = DEFAULT_RADIUS;
            this.color[0] = 0;
        }
    
    
        public CustmMultipleDotSpan(int color) {
            this.radius = DEFAULT_RADIUS;
            this.color[0] = 0;
        }
    
    
        public CustmMultipleDotSpan(float radius) {
            this.radius = radius;
            this.color[0] = 0;
        }
    
    
        public CustmMultipleDotSpan(float radius, int[] color) {
            this.radius = radius;
            this.color = color;
        }
    
        @Override
        public void drawBackground(
                Canvas canvas, Paint paint,
                int left, int right, int top, int baseline, int bottom,
                CharSequence charSequence,
                int start, int end, int lineNum
        ) {
    
            int total = color.length > 5 ? 5 : color.length;
            int leftMost = (total - 1) * -10;
    
            for (int i = 0; i < total; i++) {
                int oldColor = paint.getColor();
                if (color[i] != 0) {
                    paint.setColor(color[i]);
                }
                canvas.drawCircle((left + right) / 2 - leftMost, bottom + radius, radius, paint);
                paint.setColor(oldColor);
                leftMost = leftMost + 20;
            }
        }
    }
    

    You will also need an ever so slightly altered EventDecorator:

    public class EventDecorator implements DayViewDecorator {
    
        private final int[] colors;
        private final HashSet<CalendarDay> dates;
    
    
        public EventDecorator(Collection<CalendarDay> dates, int[] colors) {
            //this.color = color;
            this.dates = new HashSet<>(dates);
    
            this.colors = colors;
    
        }
    
    
        public EventDecorator(List<MainActivity.Filter> filteredEvents) {
            //this.color = color;
    
            this.dates = new HashSet<>(filteredEvents.get(0).calDayArr);
            int[] colors = new int[1];
            colors[0] = filteredEvents.get(0).color;
            this.colors = colors;
    
        }
    
        @Override
        public boolean shouldDecorate(CalendarDay day) {
            return dates.contains(day);
        }
    
        @Override
        public void decorate(DayViewFacade view) {
    
            view.addSpan((new CustmMultipleDotSpan(5,colors)));
    
        }
    
    
    }
    

    And that is basically it.

    Now find your calendarview in your activity, and give it some dates, and colors to show on those dates. In my particular case, I sort my dates in 5 different lists based on the amount of events per day, so you will end up with something like

    calendarView.addDecorator(new EventDecorator(threeEventDays,threeColors)); Where threeEventDays is a Collection of CalendarDay and threeColors is an int array int[] threeColors = { Color.rgb(0, 0, 255), Color.rgb(0, 255, 0), Color.rgb(255, 0, 0)};

    It's nowhere near as ideal as it should be, but what it does is it expects an array of colors. Calculates the leftmost position, based on the array size, so for a size one, the left most position is the middle dot we all know and love. For size 2 the left most position is -10, for size 3 it's -20 and so on. Then loops through and paints the dots.

    It's limited to 5 event dots as it gets quite ugly above that, and though currently not on my roadmap, if it turns out to be a requirement I might add support for a second line of dots.

    opened by teneketo 10
  • Cannot create variant 'android-lint' after configuration

    Cannot create variant 'android-lint' after configuration

    I'm trying to run Sample in android studio 3.1 canary 4 and get the error: Error: Can not create variant 'android-lint' after configuration ': library: debugRuntimeElements' has been resolved

    opened by KORuL 9
  • Add other month days until week row is filled

    Add other month days until week row is filled

    I'd like to show other month dates, but I don't want to add an entire row with other month days. Something like this

    image

    Currently, mcv_showOtherDates fills the 6 week rows with CalendarDay, but it would be nice if we could specify a new showOtherDates mode, for example fill_week

    I guess this could be done by creating a Decorator in onDateSelected and dynamically calculating which dates fit, but it would be nice if the library provided an easier way

    enhancement 
    opened by Maragues 9
  • Labelling Calendar with Events

    Labelling Calendar with Events

    Hey, I'm trying to achieve something similar to the image I've attached, which has events added to the calendar. I'm thinking I could do this by creating a custom Span class as shown here in stackoverflow.

    However, my issue is that DayViewDecorator.decorate doesn't know which date it's currently decorating, so I can't pass specific event names to it. Is there a way I could achieve this? Cheers

    calendar

    opened by emm-an-uel 0
  • Why selector drawable doesn't work?

    Why selector drawable doesn't work?

    In sample app, we have state list drawable my_selector (In example MySelectorDecorator using this selector )

    Inside of which, we have defined states when user select a date , it will decorate the drawable on selected date and remaining will be transparent but what if I want show drawable for rest but when selected make it transparent or different color?

    <?xml version="1.0" encoding="utf-8"?>
    <selector xmlns:android="http://schemas.android.com/apk/res/android"
        android:exitFadeDuration="@android:integer/config_shortAnimTime">
    
      <item android:drawable="@drawable/ic_my_selector" android:state_checked="false"/>
    
      <item android:drawable="@drawable/ic_my_selector" android:state_pressed="false"/>
    
      <item android:drawable="@android:color/transparent" android:state_checked="true"/>
    
    </selector>
    

    the result is unexpected, it shows all dates are decorated and when we press on a date ,if it is transparent nothing will change but if we have used some different color says orange , it will blink orange for a milli sec and goes away. Why states aren't maintained? Am I missing something? How can I achieve the expected behavior?

    opened by vivekgupta4Git 0
  • How to change the background

    How to change the background

    image

    app:mcv_selectionColor="#FFFFFF"

    The selected date can be changed to

    app:mcv_selectionColor="#FFFFFF"

    but how do categorized dates be customized to a circle like the selected date?

    opened by honeysleep 0
  • How to increase height of row to display more info

    How to increase height of row to display more info

    I would to like increase more height of row to display more info for Decorators DotSpan but I don't know how to increase it only, when I use titleSize it is very ugly it will increase for title also but I only want increase bottom of row to display more info. You can see image for more info Screen_Capture-2

    opened by windcloudit 0
  • Can I add labels on dates?

    Can I add labels on dates?

    I tried add the text to dates with JsonObject, but the text is empty.

    class EventDecorator(jsonTotal: JSONObject, dates: HashSet<String>) : DayViewDecorator {
        val totalData = jsonTotal
        val dates: HashSet<String> = dates
        var dDay = ""
        var label = ""
        override fun shouldDecorate(day: CalendarDay): Boolean {
            dDay = getDay(day.year, day.month, day.day)
            label = totalData.getString(dDay)
            return dates.contains(dDay)
        }
    
        override fun decorate(view: DayViewFacade) {
            view.addSpan(DotSpan(5f, Color.RED))
            // view.addSpan(AddTextToDates(label))
        }
    
        fun getDay(year: Int, month: Int, day: Int): String {
            val dDay = "$year-" + String.format(
                "%02d",
                month + 1
            ) + "-" + String.format("%02d", day)
            return dDay
        }
    }
    
    opened by ruNNiNg-V0V 1
Releases(2.0.1)
  • 2.0.1(Jan 23, 2019)

  • 2.0.0(Sep 7, 2018)

    Removed

    • Removed java.util.Calendar in favor of java.time.LocalDate.

    Fixed

    • Fixed RTL Support
    • Fixed Remove Restored XML Parameters
    • Fixed Range selection ordering & Issues
    • Fixed Timezone Issues

    Changes:

    • Replaced arrows pngs with vectors
    • New Api naming for setting the arrows drawable: setLeftArrow and setRightArrow
    • Code Style Reformat to Prolific's latest.
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0-RC2(Aug 15, 2018)

    Fixed

    • Fixed RTL Support
    • Fixed Remove Restored XML Parameters

    Changes:

    • Replaced arrows pngs with vectors
    • New Api naming for setting the arrows drawable: setLeftArrow and setRightArrow
    Source code(tar.gz)
    Source code(zip)
  • 2.0.0-RC1(Jul 27, 2018)

    Removed

    • Removed java.util.Calendar in favor of java.time.LocalDate.

    Fixed

    • Fixed Range selection ordering & Issues
    • Fixed Timezone Issues

    Changes:

    • Code Style Reformat to Prolific's latest.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.1(Jul 23, 2018)

    Added

    • A new xml parameter for choosing selection mode app:mcv_selectionMode="single" with the possible values being none, single, multiple and range. Default mode is still single.

    Removed

    • Removed any references to java.util.Date in preference to java.util.Calendar, wherever it was used.

    Fixed

    • Issue with weekdays not being shown after rotation changes.
    Source code(tar.gz)
    Source code(zip)
  • 1.6.0(Jul 6, 2018)

    Added

    • Long Click Listener api for date cells using: setOnDateLongClickListener(OnDateLongClickListener)
    • Show and Hide WeekDays row in xml and Programmatically.
    • Api for setting content description formatter setDayFormatterContentDescription(DayFormatter).
    • Apply custom fonts through text appearance styling.

    Fixed

    • Talkback improvements.
    • Range mode selection issues.
    Source code(tar.gz)
    Source code(zip)
  • 1.5.0(May 16, 2018)

    Updated

    • Gradle and dependencies have now been updated to the latest.

    Host service updated

    The library is now hosted on jitpack. Please refer to the installation section for more information.

    maven { url 'https://jitpack.io' }
    ...
    dependencies { implementation 'com.github.prolificinteractive:material-calendarview:1.5.0' }
    
    Source code(tar.gz)
    Source code(zip)
  • v1.4.3(Feb 27, 2017)

    • New: OnTitleClickListener for title click events
    • New: Added setSaveCurrentPosition builder method to use the current position when switching mode
    • Bug fixes
    Source code(tar.gz)
    Source code(zip)
  • v1.4.2(Oct 10, 2016)

    • New: match_parent is now supported by tileSize, tileWidth and tileHeight
    • New: Api for title animation orientation horizontal/vertical setTitleAnimationOrientation
    • Bug fixes
    Source code(tar.gz)
    Source code(zip)
  • v1.4.0(Jun 23, 2016)

    • New: setSelectionMode(SELECTION_MODE_RANGE)
    • Breaking Change: setFirstDayOfWeek, setMin/MaxDate, and setCalendarDisplayMode are moved to a State object.
    mcv.state().edit()
      .setFirstDayOfWeek(Calendar.WEDNESDAY)
      .setMinimumDate(CalendarDay.from(2016, 4, 3))
      .setMaximumDate(CalendarDay.from(2016, 5, 12))
      .setCalendarDisplayMode(CalendarMode.WEEKS)
      .commit();
    

    See CUSTOMIZATION_BUILDER for more information.

    Source code(tar.gz)
    Source code(zip)
  • v1.3.0(Jun 23, 2016)

    • New: MCV goToNext and goToPrevious API to programmatically trigger paging
    • New: Allow users to click on dates outside of current month with setAllowClickDaysOutsideCurrentMonth
    • New: Set tile width/height separately rather than single tile size
    • New: Attributes: mcv_tileWidth, mcv_tileHeight, mcv_calendarMode
    • Change: CalendarMode.WEEK officially marked @Experimental, use with caution
    • Change: getTileSize is deprecated, use getTileWidth and getTileHeight. setTileSize still works as a convenience method to set width and height at the same time.
    • Fix: Issue with arrow not enabled when setting maxDate
    • Fix: Issue with number of pages not calculated correctly with maxDate causing last page to be unreachable
    • Fix: TalkBack content descriptions for pager view, forward/back arrows, and ability to set them manually
    • Fix: Crash while in Week mode when CalendarPagerAdapter#getItemPosition is called
    • Fix: Calendar Mode is retained on restore instance state
    • Fix: Min/Max date range is retained on restore instance state
    • Issue: Week mode - Restore instance state shows the previous week of the one that was saved
    • Issue: Week mode - Some combinations of first day of week, min/max date can cause the last week not to be pagable
    Source code(tar.gz)
    Source code(zip)
  • v1.2.0(Jan 25, 2016)

    • Fix: Disable paging also disables arrows
    • Fix: Allow paging from the entire width of the view
    • New: Dynamic Height, the calendar can now resize its height based on the currently visible month
    • New: Add single week calendar mode
    Source code(tar.gz)
    Source code(zip)
  • v1.1.0(Oct 19, 2015)

    • New: Ability to disable month swiping with setPagingEnabled()
    • Fix #149: save selected dates as a typed List instead of an array.
    • Change: Some preformance optimizations
    Source code(tar.gz)
    Source code(zip)
  • v1.0.1(Sep 30, 2015)

  • v1.0.0(Sep 30, 2015)

    • New: Added ability to select multiple dates or disable selection completely
    • Change: OnDateChangedListener has become OnDateSelectedListener with different functionality
    • Change: showOtherDates is now a integer flag for finer control over which days are shown
    • Change: CalendarDay.toString() no longer adds one to the month
    Source code(tar.gz)
    Source code(zip)
  • v0.8.0(Sep 30, 2015)

    • Change: The view now responds better to layout parameters. The functionality is similar to how adjustViewBounds works with ImageView, where the view will try and take up as much space as necessary, but we base it on tile size instead of an aspect ratio. The exception being that if a tileSize is set, that will override everything and set the view to that size.
    • Fix: Use more efficent method for indexing months
    Source code(tar.gz)
    Source code(zip)
  • v0.7.0(Sep 30, 2015)

    • Fix: Being in certain timezones only showed the last week of the month
    • Fix: Decorating with a custom selection drawable now works correctly
    • Change: Now detect the first day of the week based off of Locale
    • New: You can now change the current month without animating using setCurrentDate(day, false)
    • Fix: Null pointer when trying to remove decorators when none have been added
    • Fix: Improve Javadoc
    Source code(tar.gz)
    Source code(zip)
  • v0.6.0(Sep 30, 2015)

    • New: DayViewDecorators now support disabling individual days
    • New: You can set custom masks for arrows
    • New: You can now set the top bar (arrows and title) as no visible
    Source code(tar.gz)
    Source code(zip)
  • v0.5.0(Sep 30, 2015)

    • Change: There are several factory methods on CalendarDay which should be used in place of the now deprecated constructors
    • Bugfix: You can now clear the selected date. Either by passing null or calling clearSelection()
    • New: You can now supply a custom DayFormatter to format day labels.
    Source code(tar.gz)
    Source code(zip)
  • v0.4.0(Sep 30, 2015)

  • v0.3.2(Sep 30, 2015)

  • v0.3.1(Sep 30, 2015)

Owner
Prolific Interactive
Prolific Interactive is a strategy-led mobile agency partnering with high-growth lifestyle brands.
Prolific Interactive
A material-styled android view that provisions picking of a date, time & recurrence option, all from a single user-interface.

SublimePicker A customizable view that provisions picking of a date, time & recurrence option, all from a single user-interface. You can also view 'Su

Vikram 2.3k Jan 4, 2023
A Material design back port of Android's CalendarView

Material Calendar View A Material design back port of Android's CalendarView. The goal is to have a Material look and feel, rather than 100% parity wi

Prolific Interactive 5.8k Jan 5, 2023
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar

#Android-LollipopShowcase This is a simple showcase to show off Android's all new Material Design and some other cool new stuff which is (new) in Andr

Mike Penz 1.8k Nov 10, 2022
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar

#Android-LollipopShowcase This is a simple showcase to show off Android's all new Material Design and some other cool new stuff which is (new) in Andr

Mike Penz 1.8k Nov 10, 2022
A simple app to showcase Androids Material Design and some of the cool new cool stuff in Android Lollipop. RecyclerView, CardView, ActionBarDrawerToggle, DrawerLayout, Animations, Android Compat Design, Toolbar

#Android-LollipopShowcase This is a simple showcase to show off Android's all new Material Design and some other cool new stuff which is (new) in Andr

Mike Penz 1.8k Nov 10, 2022
A simple library which gives you custom design CalendarView with dialog functionality and event handlers.

CalendarView A simple library which gives you custom design CalendarView with dialog functionality and event handlers. 1: CalendarView Demo Screen 1.1

Shahzad Afridi (Opriday) 49 Oct 28, 2022
Visual back-port of the rotating drawer-to-arrow drawable from Android L

DrawerArrowDrawable A simple drawable backport of the new drawer-indicator/back-arrow rotating drawable from the upcoming Android L. License Copyright

Chris Renke 827 Nov 25, 2022
Visual back-port of the rotating drawer-to-arrow drawable from Android L

DrawerArrowDrawable A simple drawable backport of the new drawer-indicator/back-arrow rotating drawable from the upcoming Android L. License Copyright

Chris Renke 827 Nov 25, 2022
Androids EditText that animates the typed text. EditText is extended to create AnimatedEditText and a PinEntryEditText.

AnimatedEditText for Android This repository contains AnimatedEditText and TextDrawable all of which extend the behaviour of EditText and implement fe

Ali Muzaffar 439 Nov 29, 2022
Material Design text field that comes in a box, based on (OLD) Google Material Design guidelines.

TextFieldBoxes A new Material Design text field that comes in a box, based on Google Material Design guidelines. ???? 中文看这里 UPDATE NOTICE 1.4.5 Releas

Mark Wang 769 Jan 7, 2023
CuteToast is an Material Design Custom Toast for Android | Custom Material Design Toast

CuteToast is an Android Custom Toast library that could be used instead of Default Toast. It does everything as Toast but with some extra spice.

K M Rejowan Ahmmed 12 Dec 17, 2022
Bottom Navigation widget component inspired by the Google Material Design Guidelines at https://www.google.com/design/spec/components/bottom-navigation.html

Material Bottom Navigation Library Lightweight Bottom Navigation library component inspired by the Google Material Design Guidelines at https://www.go

Alessandro Crugnola 1.4k Dec 18, 2022
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
📱 Android Library to implement Rich, Beautiful, Stylish 😍 Material Navigation View for your project with Material Design Guidelines. Easy to use.

Material NavigationView for Android ?? ?? Android Library to implement Rich, Beautiful Material Navigation View for your project with Material Design

Shreyas Patil 198 Dec 17, 2022
:octocat: 📃 FoldingCell is a material design expanding content cell inspired by folding paper material made by @Ramotion

FOLDING CELL [JAVA] Expanding content cell with animation inspired by folding paper card material design. We specialize in the designing and coding of

Ramotion 4.9k Dec 7, 2022
A Java serialization/deserialization library to convert Java Objects into JSON and back

Gson Gson is a Java library that can be used to convert Java Objects into their JSON representation. It can also be used to convert a JSON string to a

Google 21.7k Jan 5, 2023
An Android library that help you to build app with swipe back gesture.

SwipeBackLayout An Android library that help you to build app with swipe back gesture. Demo Apk GooglePlay Requirement The latest android-support-v4.j

ike_w0ng 6.1k Dec 29, 2022
Animations for Android L drawer, back, dismiss and check icons

Material Menu Morphing Android menu, back, dismiss and check buttons Have full control of the animation: Including in your project compile 'com.balysv

Balys Valentukevicius 2.5k Dec 30, 2022
[] Android library for using the Honeycomb animation API on all versions of the platform back to 1.0!

DEPRECATED NineOldAndroids is deprecated. No new development will be taking place. Existing versions will (of course) continue to function. New applic

Jake Wharton 4.5k Jan 9, 2023
Animations for Android L drawer, back, dismiss and check icons

Material Menu Morphing Android menu, back, dismiss and check buttons Have full control of the animation: Including in your project compile 'com.balysv

Balys Valentukevicius 2.5k Jan 3, 2023