private void setupView() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); final ActionBar ab = getSupportActionBar(); ab.setDisplayHomeAsUpEnabled(true); mWeekView = (WeekView) findViewById(R.id.weekView); mWeekView.setOnEventClickListener(this); mWeekView.setMonthChangeListener(this); mWeekView.setEventLongPressListener(this); setupDateTimeInterpreter(false); }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Get a reference for the week view in the layout. mWeekView = (WeekView) findViewById(R.id.weekView); // Show a toast message about the touched event. mWeekView.setOnEventClickListener(this); // The week view has infinite scrolling horizontally. We have to provide the events of a // month every time the month changes on the week view. mWeekView.setMonthChangeListener(this); // Set long press listener for events. mWeekView.setEventLongPressListener(this); }
@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); switch (id) { case R.id.action_today: mWeekView.goToToday(); return true; case R.id.action_type: if (mWeekViewType == TYPE_WEEK_VIEW) { mWeekViewType = TYPE_DAY_VIEW; mWeekView.setNumberOfVisibleDays(1); item.setTitle(R.string.action_week_view); } else { mWeekViewType = TYPE_WEEK_VIEW; mWeekView.setNumberOfVisibleDays(3); item.setTitle(R.string.action_day_view); } return true; } return super.onOptionsItemSelected(item); }
private void setupDateTimeInterpreter(final boolean shortDate) { mWeekView.setDateTimeInterpreter( new DateTimeInterpreter() { @Override public String interpretDate(Calendar date) { SimpleDateFormat weekdayNameFormat = new SimpleDateFormat("EEE", Locale.getDefault()); String weekday = weekdayNameFormat.format(date.getTime()); SimpleDateFormat format = new SimpleDateFormat(" M/d", Locale.getDefault()); // All android api level do not have a standard way of getting the first letter of // the week day name. Hence we get the first char programmatically. // Details: // http://stackoverflow.com/questions/16959502/get-one-letter-abbreviation-of-week-day-of-a-date-in-java#answer-16959657 if (shortDate) weekday = String.valueOf(weekday.charAt(0)); return weekday.toUpperCase() + format.format(date.getTime()); } @Override public String interpretTime(int hour) { return hour > 11 ? (hour - 12) + " PM" : (hour == 0 ? "12 AM" : hour + " AM"); } }); }
@Override public boolean onOptionsItemSelected(MenuItem item) { int id = item.getItemId(); setupDateTimeInterpreter(id == R.id.action_week_view); switch (id) { case android.R.id.home: finish(); break; case R.id.action_today: mWeekView.goToToday(); return true; case R.id.action_day_view: if (mWeekViewType != TYPE_DAY_VIEW) { item.setChecked(!item.isChecked()); mWeekViewType = TYPE_DAY_VIEW; mWeekView.setNumberOfVisibleDays(1); // Lets change some dimensions to best fit the view. mWeekView.setColumnGap( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics())); mWeekView.setTextSize( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); mWeekView.setEventTextSize( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); } return true; case R.id.action_three_day_view: if (mWeekViewType != TYPE_THREE_DAY_VIEW) { item.setChecked(!item.isChecked()); mWeekViewType = TYPE_THREE_DAY_VIEW; mWeekView.setNumberOfVisibleDays(3); // Lets change some dimensions to best fit the view. mWeekView.setColumnGap( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 8, getResources().getDisplayMetrics())); mWeekView.setTextSize( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); mWeekView.setEventTextSize( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 12, getResources().getDisplayMetrics())); } return true; case R.id.action_week_view: if (mWeekViewType != TYPE_WEEK_VIEW) { item.setChecked(!item.isChecked()); mWeekViewType = TYPE_WEEK_VIEW; mWeekView.setNumberOfVisibleDays(7); // Lets change some dimensions to best fit the view. mWeekView.setColumnGap( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_DIP, 2, getResources().getDisplayMetrics())); mWeekView.setTextSize( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics())); mWeekView.setEventTextSize( (int) TypedValue.applyDimension( TypedValue.COMPLEX_UNIT_SP, 10, getResources().getDisplayMetrics())); } return true; } return super.onOptionsItemSelected(item); }