android calendar with canvas -
hi want display date image. how this??,please me.. in advance..
public class mycalendaractivity extends activity implements onclicklistener { private static final string tag = "mycalendaractivity"; private textview currentmonth; private button selecteddaymonthyearbutton; private imageview prevmonth; private imageview nextmonth; private gridview calendarview; private gridcelladapter adapter; private calendar _calendar; @suppresslint("newapi") private int month, year; @suppresswarnings("unused") @suppresslint({ "newapi", "newapi", "newapi", "newapi" }) private final dateformat dateformatter = new dateformat(); private static final string datetemplate = "mmmm yyyy"; /** called when activity first created. */ @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.my_calendar_view); _calendar = calendar.getinstance(locale.getdefault()); month = _calendar.get(calendar.month) + 1; year = _calendar.get(calendar.year); log.d(tag, "calendar instance:= " + "month: " + month + " " + "year: " + year); selecteddaymonthyearbutton = (button) .findviewbyid(r.id.selecteddaymonthyear); selecteddaymonthyearbutton.settext("selected: "); prevmonth = (imageview) this.findviewbyid(r.id.prevmonth); prevmonth.setonclicklistener(this); currentmonth = (textview) this.findviewbyid(r.id.currentmonth); currentmonth.settext(dateformat.format(datetemplate, _calendar.gettime())); nextmonth = (imageview) this.findviewbyid(r.id.nextmonth); nextmonth.setonclicklistener(this); calendarview = (gridview) this.findviewbyid(r.id.calendar); // initialised adapter = new gridcelladapter(getapplicationcontext(), r.id.calendar_day_gridcell, month, year); adapter.notifydatasetchanged(); calendarview.setadapter(adapter); } /** * * @param month * @param year */ private void setgridcelladaptertodate(int month, int year) { adapter = new gridcelladapter(getapplicationcontext(), r.id.calendar_day_gridcell, month, year); _calendar.set(year, month - 1, _calendar.get(calendar.day_of_month)); currentmonth.settext(dateformat.format(datetemplate, _calendar.gettime())); adapter.notifydatasetchanged(); calendarview.setadapter(adapter); } @override public void onclick(view v) { if (v == prevmonth) { if (month <= 1) { month = 12; year--; } else { month--; } log.d(tag, "setting prev month in gridcelladapter: " + "month: " + month + " year: " + year); setgridcelladaptertodate(month, year); } if (v == nextmonth) { if (month > 11) { month = 1; year++; } else { month++; } log.d(tag, "setting next month in gridcelladapter: " + "month: " + month + " year: " + year); setgridcelladaptertodate(month, year); } } @override public void ondestroy() { log.d(tag, "destroying view ..."); super.ondestroy(); } // /////////////////////////////////////////////////////////////////////////////////////// // inner class public class gridcelladapter extends baseadapter implements onclicklistener { private static final string tag = "gridcelladapter"; private final context _context; private final list<string> list; private static final int day_offset = 1; private final string[] weekdays = new string[] { "sun", "mon", "tue", "wed", "thu", "fri", "sat" }; private final string[] months = { "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december" }; private final int[] daysofmonth = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; private int daysinmonth; private int currentdayofmonth; private int currentweekday; private button gridcell; private textview num_events_per_day; private final hashmap<string, integer> eventspermonthmap; private final simpledateformat dateformatter = new simpledateformat( "dd-mmm-yyyy"); // days in current month public gridcelladapter(context context, int textviewresourceid, int month, int year) { super(); this._context = context; this.list = new arraylist<string>(); log.d(tag, "==> passed in date month: " + month + " " + "year: " + year); calendar calendar = calendar.getinstance(); setcurrentdayofmonth(calendar.get(calendar.day_of_month)); setcurrentweekday(calendar.get(calendar.day_of_week)); log.d(tag, "new calendar:= " + calendar.gettime().tostring()); log.d(tag, "currentdayofweek :" + getcurrentweekday()); log.d(tag, "currentdayofmonth :" + getcurrentdayofmonth()); // print month printmonth(month, year); // find number of events eventspermonthmap = findnumberofeventspermonth(year, month); } private string getmonthasstring(int i) { return months[i]; } private string getweekdayasstring(int i) { return weekdays[i]; } private int getnumberofdaysofmonth(int i) { return daysofmonth[i]; } public string getitem(int position) { return list.get(position); } @override public int getcount() { return list.size(); } /** * prints month * * @param mm * @param yy */ private void printmonth(int mm, int yy) { log.d(tag, "==> printmonth: mm: " + mm + " " + "yy: " + yy); // number of days leave blank @ // start of month. int trailingspaces = 0; int daysinprevmonth = 0; int prevmonth = 0; int prevyear = 0; int nextmonth = 0; int nextyear = 0; int currentmonth = mm - 1; string currentmonthname = getmonthasstring(currentmonth); daysinmonth = getnumberofdaysofmonth(currentmonth); log.d(tag, "current month: " + " " + currentmonthname + " having " + daysinmonth + " days."); // gregorian calendar : minus 1, set first of month gregoriancalendar cal = new gregoriancalendar(yy, currentmonth, 1); log.d(tag, "gregorian calendar:= " + cal.gettime().tostring()); if (currentmonth == 11) { prevmonth = currentmonth - 1; daysinprevmonth = getnumberofdaysofmonth(prevmonth); nextmonth = 0; prevyear = yy; nextyear = yy + 1; log.d(tag, "*->prevyear: " + prevyear + " prevmonth:" + prevmonth + " nextmonth: " + nextmonth + " nextyear: " + nextyear); } else if (currentmonth == 0) { prevmonth = 11; prevyear = yy - 1; nextyear = yy; daysinprevmonth = getnumberofdaysofmonth(prevmonth); nextmonth = 1; log.d(tag, "**--> prevyear: " + prevyear + " prevmonth:" + prevmonth + " nextmonth: " + nextmonth + " nextyear: " + nextyear); } else { prevmonth = currentmonth - 1; nextmonth = currentmonth + 1; nextyear = yy; prevyear = yy; daysinprevmonth = getnumberofdaysofmonth(prevmonth); log.d(tag, "***---> prevyear: " + prevyear + " prevmonth:" + prevmonth + " nextmonth: " + nextmonth + " nextyear: " + nextyear); } // compute how leave before before first day of // month. // getday() returns 0 sunday. int currentweekday = cal.get(calendar.day_of_week) - 1; trailingspaces = currentweekday; log.d(tag, "week day:" + currentweekday + " " + getweekdayasstring(currentweekday)); log.d(tag, "no. trailing space add: " + trailingspaces); log.d(tag, "no. of days in previous month: " + daysinprevmonth); if (cal.isleapyear(cal.get(calendar.year)) && mm == 1) { ++daysinmonth; } // trailing month days (int = 0; < trailingspaces; i++) { log.d(tag, "prev month:= " + prevmonth + " => " + getmonthasstring(prevmonth) + " " + string.valueof((daysinprevmonth - trailingspaces + day_offset) + i)); list.add(string .valueof((daysinprevmonth - trailingspaces + day_offset) + i) + "-grey" + "-" + getmonthasstring(prevmonth) + "-" + prevyear); } // current month days (int = 1; <= daysinmonth; i++) { log.d(currentmonthname, string.valueof(i) + " " + getmonthasstring(currentmonth) + " " + yy); if (i == getcurrentdayofmonth()) { list.add(string.valueof(i) + "-blue" + "-" + getmonthasstring(currentmonth) + "-" + yy); } else { list.add(string.valueof(i) + "-white" + "-" + getmonthasstring(currentmonth) + "-" + yy); } } // leading month days (int = 0; < list.size() % 7; i++) { log.d(tag, "next month:= " + getmonthasstring(nextmonth)); list.add(string.valueof(i + 1) + "-grey" + "-" + getmonthasstring(nextmonth) + "-" + nextyear); } } /** * note: need implement part given year, month, retrieve * entries sqlite database month. iterate on * list of entries, , datecreated, converted * day. * * @param year * @param month * @return */ private hashmap<string, integer> findnumberofeventspermonth(int year, int month) { hashmap<string, integer> map = new hashmap<string, integer>(); return map; } @override public long getitemid(int position) { return position; } @override public view getview(int position, view convertview, viewgroup parent) { view row = convertview; if (row == null) { layoutinflater inflater = (layoutinflater) _context .getsystemservice(context.layout_inflater_service); row = inflater.inflate(r.layout.screen_gridcell, parent, false); } // reference day gridcell gridcell = (button) row.findviewbyid(r.id.calendar_day_gridcell); gridcell.setonclicklistener(this); // account spacing log.d(tag, "current day: " + getcurrentdayofmonth()); string[] day_color = list.get(position).split("-"); string theday = day_color[0]; string themonth = day_color[2]; string theyear = day_color[3]; if ((!eventspermonthmap.isempty()) && (eventspermonthmap != null)) { if (eventspermonthmap.containskey(theday)) { num_events_per_day = (textview) row .findviewbyid(r.id.num_events_per_day); integer numevents = (integer) eventspermonthmap.get(theday); num_events_per_day.settext(numevents.tostring()); } } // set day gridcell gridcell.settext(theday); gridcell.settag(theday + "-" + themonth + "-" + theyear); log.d(tag, "setting gridcell " + theday + "-" + themonth + "-" + theyear); if (day_color[1].equals("grey")) { gridcell.settextcolor(getresources() .getcolor(r.color.lightgray)); } if (day_color[1].equals("white")) { gridcell.settextcolor(getresources().getcolor( r.color.lightgray02)); } if (day_color[1].equals("blue")) { gridcell.settextcolor(getresources().getcolor(r.color.orrange)); } return row; } @override public void onclick(view view) { string date_month_year = (string) view.gettag(); selecteddaymonthyearbutton.settext("selected: " + date_month_year); log.e("selected date", date_month_year); //new drawview(_context); //view1. // intent intent= new intent(getapplicationcontext(),mainactivity.class); // startactivity(intent); try { date parseddate = dateformatter.parse(date_month_year); log.d(tag, "parsed date: " + parseddate.tostring()); // intent intent= new intent(getapplicationcontext(),mainactivity.class); // startactivity(intent); } catch (parseexception e) { e.printstacktrace(); } } public int getcurrentdayofmonth() { return currentdayofmonth; } private void setcurrentdayofmonth(int currentdayofmonth) { this.currentdayofmonth = currentdayofmonth; } public void setcurrentweekday(int currentweekday) { this.currentweekday = currentweekday; } public int getcurrentweekday() { return currentweekday; } } public class mainactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); //setcontentview(r.layout.activity_main); drawview view = new drawview(this); view.setbackgroundcolor(color.white); setcontentview(view); //setcontentview(new drawview(this)); } public class drawview extends view { paint paint = new paint(); public drawview(context context) { super(context); } @override public void ondraw(canvas canvas) { //paint.setcolor(color.black); //paint.setstrokewidth(3); //canvas.drawrect(30, 30, 80,80, paint); //paint.setstrokewidth(0); //paint.setcolor(color.cyan); canvas.drawrect(30, 30, 80,80, paint); paint.setcolor(color.red); canvas.drawrect(30, 30, 80,80, paint); } } } }
Comments
Post a Comment