I find a great library to add events to our own CalendarView.
Credits :
SundeepK github : https://github.com/SundeepK/CompactCalendarView
Step: 1 ======
Add Dependency to build.gradle file
dependencies { compile ' com. github . sundeepk : compact- calendar- view: 1.8 . 3 ' } Step: 2 ======
Create an XML Layout like below with CompactCalendarView.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android= "http://schemas.android.com/apk/res/android" xmlns:app= "http://schemas.android.com/apk/res-auto" android:layout_width= "match_parent" android:layout_height= "wrap_content" android:orientation= "vertical" > <android.support.v7.widget.Toolbar android:id= "@+id/toolbar" android:layout_width= "match_parent" android:layout_height= "?attr/actionBarSize" android:background= "?attr/colorPrimary" android:elevation= "4dp" android:theme= "@style/ThemeOverlay.AppCompat.Dark.ActionBar" app:popupTheme= "@style/ThemeOverlay.AppCompat.Light" /> <com.github.sundeepk.compactcalendarview.CompactCalendarView android:id= "@+id/compactcalendar_view" android:layout_width= "match_parent" android:layout_height= "250dp" android:paddingLeft= "16dp" android:paddingRight= "16dp" app:compactCalendarBackgroundColor= "#00bcd4" app:compactCalendarCurrentDayBackgroundColor= "#1a8cd7" app:compactCalendarCurrentSelectedDayBackgroundColor= "#E57373" app:compactCalendarTextColor= "#FFF" app:compactCalendarTextSize= "12sp" /> </LinearLayout>
Step: 3 ======
Create an Activity
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 package com. pratap . calendarview ; import android.graphics.Color ; import android.os.Bundle ; import android.support.v7.app.ActionBar ; import android.support.v7.app.AppCompatActivity ; import android.support.v7.widget.Toolbar ; import android.widget.Toast ; import com.github.sundeepk.compactcalendarview.CompactCalendarView ; import com.github.sundeepk.compactcalendarview.domain.CalendarDayEvent ; import java.text.SimpleDateFormat ; import java.util.Calendar ; import java.util.Date ; import java.util.Locale ; public class MainActivity extends AppCompatActivity { private Toolbar toolbar; CompactCalendarView compactCalendarView; private SimpleDateFormat dateFormatForMonth = new SimpleDateFormat( "MMMM- yyyy" , Locale. getDefault ()); private Calendar currentCalender = Calendar. getInstance ( Locale. getDefault ()); @Override protected void onCreate ( Bundle savedInstanceState) { super . onCreate ( savedInstanceState); setContentView( R. layout . activity_main ); toolbar = ( Toolbar) findViewById( R. id . toolbar ); setSupportActionBar( toolbar); final ActionBar actionBar = getSupportActionBar(); actionBar. setHomeAsUpIndicator ( R. drawable . ic_menu_white_24px ); actionBar. setDisplayHomeAsUpEnabled ( true ); // Setting default toolbar title to empty actionBar. setTitle ( null ); compactCalendarView = ( CompactCalendarView) findViewById( R. id . compactcalendar_view ); compactCalendarView. drawSmallIndicatorForEvents ( true ); compactCalendarView. setUseThreeLetterAbbreviation ( true ); //set initial title actionBar. setTitle ( dateFormatForMonth. format ( compactCalendarView. getFirstDayOfCurrentMonth ())); //set title on calendar scroll compactCalendarView. setListener ( new CompactCalendarView. CompactCalendarViewListener () { @Override public void onDayClick ( Date dateClicked) { Toast. makeText ( MainActivity. this , "Date : " + dateClicked. toString (), Toast. LENGTH_SHORT ). show (); } @Override public void onMonthScroll ( Date firstDayOfNewMonth) { // Changes toolbar title on monthChange actionBar. setTitle ( dateFormatForMonth. format ( firstDayOfNewMonth)); } }); addDummyEvents(); // gotoToday(); } // Adding dummy events in calendar view for April, may, june 2016 private void addDummyEvents () { addEvents( compactCalendarView, Calendar. APRIL ); addEvents( compactCalendarView, Calendar. MAY ); addEvents( compactCalendarView, Calendar. JUNE ); // Refresh calendar to update events compactCalendarView. invalidate (); } // Adding events from 1 to 6 days private void addEvents ( CompactCalendarView compactCalendarView, int month) { currentCalender. setTime ( new Date()); currentCalender. set ( Calendar. DAY_OF_MONTH , 1 ); Date firstDayOfMonth = currentCalender. getTime (); for ( int i = 0 ; i < 6 ; i++) { currentCalender. setTime ( firstDayOfMonth); if ( month > - 1 ) { currentCalender. set ( Calendar. MONTH , month); } currentCalender. add ( Calendar. DATE , i); setToMidnight( currentCalender); compactCalendarView. addEvent ( new CalendarDayEvent( currentCalender. getTimeInMillis (), Color. argb ( 255 , 255 , 255 , 255 )), false ); } } private void setToMidnight ( Calendar calendar) { calendar. set ( Calendar. HOUR_OF_DAY , 0 ); calendar. set ( Calendar. MINUTE , 0 ); calendar. set ( Calendar. SECOND , 0 ); calendar. set ( Calendar. MILLISECOND , 0 ); } public void gotoToday () { // Set any date to navigate to particular date compactCalendarView. setCurrentDate ( Calendar. getInstance ( Locale. getDefault ()). getTime ()); } }
Screenshot ========
Source Code ==========
Dropbox Link Demo ====
VIDEO
No comments:
Post a Comment