安卓日历开发源代码_第1页
安卓日历开发源代码_第2页
安卓日历开发源代码_第3页
安卓日历开发源代码_第4页
安卓日历开发源代码_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

】 /* * 日历gridview中的每一个item显示的textview * author lmw * */ public class CalendarAdapter extends BaseAdapter private boolean isLeapyear = false; /是否为闰年 private int daysOfMonth = 0; /某月的天数 private int dayOfWeek = 0; /具体某一天是星期几 private int lastDaysOfMonth = 0; /上一个月的总天数 private Context context; private String dayNumber = new String42; /一个gridview中的日期存入此数组中 / private static String week = 周日,周一,周二,周三,周四,周五,周六; private SpecialCalendar sc = null; private LunarCalendar lc = null; private Resources res = null; private Drawable drawable = null; private String currentYear = ; private String currentMonth = ; private String currentDay = ; private SimpleDateFormat sdf = new SimpleDateFormat(yyyy-M-d); private int currentFlag = -1; /用于标记当天 private int schDateTagFlag = null; /存储当月所有的日程日期 private String showYear = ; /用于在头部显示的年份 private String showMonth = ; /用于在头部显示的月份 private String animalsYear = ; private String leapMonth = ; /闰哪一个月 private String cyclical = ; /天干地支 /系统当前时间 private String sysDate = ; private String sys_year = ; private String sys_month = ; private String sys_day = ; public CalendarAdapter() Date date = new Date(); sysDate = sdf.format(date); /当期日期 sys_year = sysDate.split(-)0; sys_month = sysDate.split(-)1; sys_day = sysDate.split(-)2; public CalendarAdapter(Context context,Resources rs,int jumpMonth,int jumpYear,int year_c,int month_c,int day_c) this(); this.context= context; sc = new SpecialCalendar(); lc = new LunarCalendar(); this.res = rs; int stepYear = year_c+jumpYear; int stepMonth = month_c+jumpMonth ; if(stepMonth 0) /往下一个月滑动 if(stepMonth%12 = 0) stepYear = year_c + stepMonth/12 -1; stepMonth = 12; else stepYear = year_c + stepMonth/12; stepMonth = stepMonth%12; else /往上一个月滑动 stepYear = year_c - 1 + stepMonth/12; stepMonth = stepMonth%12 + 12; if(stepMonth%12 = 0) currentYear = String.valueOf(stepYear); /得到当前的年份 currentMonth = String.valueOf(stepMonth); /得到本月 (jumpMonth为滑动的次数,每滑动一次就增加一月或减一月) currentDay = String.valueOf(day_c); /得到当前日期是哪天 getCalendar(Integer.parseInt(currentYear),Integer.parseInt(currentMonth); public CalendarAdapter(Context context,Resources rs,int year, int month, int day) this(); this.context= context; sc = new SpecialCalendar(); lc = new LunarCalendar(); this.res = rs; currentYear = String.valueOf(year); /得到跳转到的年份 currentMonth = String.valueOf(month); /得到跳转到的月份 currentDay = String.valueOf(day); /得到跳转到的天 getCalendar(Integer.parseInt(currentYear),Integer.parseInt(currentMonth); Override public int getCount() / TODO Auto-generated method stub return dayNumber.length; Override public Object getItem(int position) / TODO Auto-generated method stub return position; Override public long getItemId(int position) / TODO Auto-generated method stub return position; Override public View getView(int position, View convertView, ViewGroup parent) if(convertView = null) convertView = LayoutInflater.from(context).inflate(R.layout.calendar_item, null); TextView textView = (TextView) convertView.findViewById(R.id.tvtext); String d = dayNumberposition.split(.)0; String dv = dayNumberposition.split(.)1; SpannableString sp = new SpannableString(d+n+dv); sp.setSpan(new StyleSpan(android.graphics.Typeface.BOLD), 0, d.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); sp.setSpan(new RelativeSizeSpan(1.2f) , 0, d.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); if(dv != null |dv != ) sp.setSpan(new RelativeSizeSpan(0.75f), d.length()+1, dayNumberposition.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE); / sp.setSpan(new ForegroundColorSpan(Color.MAGENTA), 14, 16, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE) textView.setText(sp); textView.setTextColor(Color.GRAY); / if(position7) / /设置周 / textView.setTextColor(Color.WHITE); / textView.setBackgroundColor(color.search_txt_color); / textView.setTextSize(14); / if (position = dayOfWeek) / 当前月信息显示 textView.setTextColor(Color.BLACK);/ 当月字体设黑 drawable = res.getDrawable(R.drawable.current_day_bgc); if(schDateTagFlag != null & schDateTagFlag.length 0) for(int i = 0; i schDateTagFlag.length; i+) if(schDateTagFlagi = position) /设置日程标记背景 textView.setBackgroundResource(R.drawable.mark); if(currentFlag = position) /设置当天的背景 drawable = res.getDrawable(R.drawable.current_day_bgc); textView.setBackgroundDrawable(drawable); textView.setTextColor(Color.WHITE); return convertView; /得到某年的某月的天数且这月的第一天是星期几 public void getCalendar(int year, int month) isLeapyear = sc.isLeapYear(year); /是否为闰年 daysOfMonth = sc.getDaysOfMonth(isLeapyear, month); /某月的总天数 dayOfWeek = sc.getWeekdayOfMonth(year, month); /某月第一天为星期几 lastDaysOfMonth = sc.getDaysOfMonth(isLeapyear, month-1); /上一个月的总天数 Log.d(DAY, isLeapyear+ = +daysOfMonth+ = +dayOfWeek+ = +lastDaysOfMonth); getweek(year,month); /将一个月中的每一天的值添加入数组dayNuber中 private void getweek(int year, int month) int j = 1; int flag = 0; String lunarDay = ; /得到当前月的所有日程日期(这些日期需要标记) for (int i = 0; i dayNumber.length; i+) / 周一 / if(i7) / dayNumberi=weeki+.+ ; / if(i dayOfWeek) /前一个月 int temp = lastDaysOfMonth - dayOfWeek+1; lunarDay = lc.getLunarDate(year, month-1, temp+i,false); dayNumberi = (temp + i)+.+lunarDay; else if(i daysOfMonth + dayOfWeek) /本月 String day = String.valueOf(i-dayOfWeek+1); /得到的日期 lunarDay = lc.getLunarDate(year, month, i-dayOfWeek+1,false); dayNumberi = i-dayOfWeek+1+.+lunarDay; /对于当前月才去标记当前日期 if(sys_year.equals(String.valueOf(year) & sys_month.equals(String.valueOf(month) & sys_day.equals(day) /标记当前日期 currentFlag = i; setShowYear(String.valueOf(year); setShowMonth(String.valueOf(month); setAnimalsYear(lc.animalsYear(year); setLeapMonth(lc.leapMonth = 0?:String.valueOf(lc.leapMonth); setCyclical(lc.cyclical(year); else /下一个月 lunarDay = lc.getLunarDate(year, month+1, j,false); dayNumberi = j+.+lunarDay; j+; String abc = ; for(int i = 0; i dayNumber.length; i+) abc = abc+dayNumberi+:; Log.d(DAYNUMBER,abc); public void matchScheduleDate(int year, int month, int day) /* * 点击每一个item时返回item中的日期 * param position * return */ public String getDateByClickItem(int position) return dayNumberposition; /* * 在点击gridView时,得到这个月中第一天的位置 * return */ public int getStartPositon() return dayOfWeek+7; /* * 在点击gridView时,得到这个月中最后一天的位置 * return */ public int getEndPosition() return (dayOfWeek+daysOfMonth+7)-1; public String getShowYear() return showYear; public void setShowYear(String showYear) this.showYear = showYear; public String getShowMonth() return showMonth; public void setShowMonth(String showMonth) this.showMonth = showMonth; public String getAnimalsYear() return animalsYear; public void setAnimalsYear(String animalsYear) this.animalsYear = animalsYear; public String getLeapMonth() return leapMonth; public void setLeapMonth(String leapMonth) this.leapMonth = leapMonth; public String getCyclical() return cyclical; public void setCyclical(String cyclical) this.cyclical = cyclical; import java.util.Calendar; public class SpecialCalendar private int daysOfMonth = 0; /某月的天数 private int dayOfWeek = 0; /具体某一天是星期几 / 判断是否为闰年 public boolean isLeapYear(int year) if (year % 100 = 0 & year % 400 = 0) return true; else if (year % 100 != 0 & year % 4 = 0) return true; return false; /得到某月有多少天数 public int getDaysOfMonth(boolean isLeapyear, int month) switch (month) case 1: case 3: case 5: case 7: case 8: case 10: case 12: daysOfMonth = 31; break; case 4: case 6: case 9: case 11: daysOfMonth = 30; break; case 2: if (isLeapyear) daysOfMonth = 29; else daysOfMonth = 28; return daysOfMonth; /指定某年中的某月的第一天是星期几 public int getWeekdayOfMonth(int year, int month) Calendar cal = Calendar.getInstance(); cal.set(year, month-1, 1); dayOfWeek = cal.get(Calendar.DAY_OF_WEEK)-1; return dayOfWeek; public class LunarCalendar private int year; /农历的年份 private int month; private int day; private String lunarMonth; /农历的月份 private bo

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论