CalendarView like Google Calendar in Android
Step: 1
Add Dependency to build.gradle
compile 'com.github.sundeepk:compact-calendar-view:1.8.3'Step: 2 Create an XML Layout like below with CompactCalendarView
<?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 a Activity
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() { compactCalendarView.setCurrentDate(Calendar.getInstance(Locale.getDefault()).getTime()); } }
Explain : code Android
Method 1: 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(); }Method 2: 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); } }Method 3: Set calendar
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); }Method 4: get today
public void gotoToday() { compactCalendarView.setCurrentDate(Calendar.getInstance(Locale.getDefault()).getTime()); }Link gitHub: https://github.com/SundeepK/CompactCalendarView
No comments
Post a Comment