CalendarView like Google Calendar in Android
Step: 1
Add Dependency to build.gradle
compile 'com.github.sundeepk:compact-calendar-view:1.8.3'
<?xml version="1.0" encoding="utf-8"?>Step: 3 Create a Activity
<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>
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() {Method 2: Adding events from 1 to 6 days
addEvents(compactCalendarView, Calendar.APRIL);
addEvents(compactCalendarView, Calendar.MAY);
addEvents(compactCalendarView, Calendar.JUNE);
// Refresh calendar to update events
compactCalendarView.invalidate();
}
private void addEvents(CompactCalendarView compactCalendarView, int month) {Method 3: Set calendar
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) {Method 4: get today
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() {Link gitHub: https://github.com/SundeepK/CompactCalendarView
compactCalendarView.setCurrentDate(Calendar.getInstance(Locale.getDefault()).getTime());
}
No comments:
Post a Comment