This question is locked. New answers and comments are not allowed.
Hello telerik. I just want to ask if there is any sample code that shows how to use a custom EventRenderer for painting of the events in a calendar cell? I have an attached file that represents a sample calendar cell, with small-rounded-colored shapes below that represents events. Below is my sample code so far. any help would be greatly appreciated. Thanks.
private RadCalendarView radCalendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rad_calendar_sample);
radCalendar = (RadCalendarView) findViewById(R.id.calendarView);
Calendar calendar = Calendar.getInstance();
long eventStart = calendar.getTimeInMillis();
calendar.add(Calendar.HOUR, 1);
long eventEnd = calendar.getTimeInMillis();
Event event1 = new Event("", eventStart, eventEnd);
Event event2 = new Event("", eventStart, eventEnd);
Event event3 = new Event("", eventStart, eventEnd);
List<Event> events = new ArrayList<Event>();
events.add(event1);
events.add(event2);
events.add(event3);
radCalendar.getEventAdapter().setRenderer(new MyEventRenderer(this));
radCalendar.getEventAdapter().setEvents(events);
radCalendar.notifyDataChanged();
}
private class MyEventRenderer extends EventRenderer {
private int shapeRadius;
private Paint paint;
public MyEventRenderer(Context context) {
super(context);
paint = new Paint();
paint.setAntiAlias(true);
}
@Override
public void renderEvents(Canvas canvas, CalendarCell cell) {
shapeRadius = cell.getWidth() > cell.getHeight() ? cell.getHeight() : cell.getWidth();
shapeRadius *= 0.45;
Rect borderRect = cell.calcBorderRect();
int centerX = (borderRect.left + borderRect.right) / 2;
int centerY = (borderRect.top + borderRect.bottom) / 2;
paint.setColor(Color.RED);
MyEventRenderer.this.drawCircle(canvas, centerX, centerY);
}
private void drawCircle(Canvas canvas, int x, int y) {
canvas.drawCircle(x, y, (int) (this.shapeRadius * 0.9f), this.paint);
}
}
private RadCalendarView radCalendar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_rad_calendar_sample);
radCalendar = (RadCalendarView) findViewById(R.id.calendarView);
Calendar calendar = Calendar.getInstance();
long eventStart = calendar.getTimeInMillis();
calendar.add(Calendar.HOUR, 1);
long eventEnd = calendar.getTimeInMillis();
Event event1 = new Event("", eventStart, eventEnd);
Event event2 = new Event("", eventStart, eventEnd);
Event event3 = new Event("", eventStart, eventEnd);
List<Event> events = new ArrayList<Event>();
events.add(event1);
events.add(event2);
events.add(event3);
radCalendar.getEventAdapter().setRenderer(new MyEventRenderer(this));
radCalendar.getEventAdapter().setEvents(events);
radCalendar.notifyDataChanged();
}
private class MyEventRenderer extends EventRenderer {
private int shapeRadius;
private Paint paint;
public MyEventRenderer(Context context) {
super(context);
paint = new Paint();
paint.setAntiAlias(true);
}
@Override
public void renderEvents(Canvas canvas, CalendarCell cell) {
shapeRadius = cell.getWidth() > cell.getHeight() ? cell.getHeight() : cell.getWidth();
shapeRadius *= 0.45;
Rect borderRect = cell.calcBorderRect();
int centerX = (borderRect.left + borderRect.right) / 2;
int centerY = (borderRect.top + borderRect.bottom) / 2;
paint.setColor(Color.RED);
MyEventRenderer.this.drawCircle(canvas, centerX, centerY);
}
private void drawCircle(Canvas canvas, int x, int y) {
canvas.drawCircle(x, y, (int) (this.shapeRadius * 0.9f), this.paint);
}
}