package com.lfk.justwetools.View.ClassTable; import android.text.Html; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /** * 课程信息枚举类 * 使用枚举类来规范API防止程序员发生SB错误 * * @author liufengkai * Created by liufengkai on 16/5/16. */ public class ClassUtils { // 日期 public enum ClassDay { Monday(1), Tuesday(2), Wednesday(3), Thursday(4), Friday(5), Saturday(6), Sunday(7); public int value; ClassDay(int value) { this.value = value; } } // 节数 每天只有六节课 public enum ClassTime { N1Class(1), N2Class(2), N3Class(3), N4Class(4), N5Class(5), N6Class(6), N7Class(7), N8Class(8), N9Class(9), N10Class(10), N11Class(11), N12Class(12); public int value; ClassTime(int value) { this.value = value; } } /** * 数字和课程节的转换 * * @param date 数据 * @return 课程 */ public static ClassTime getClassTime(int date) { ClassTime time; switch (date) { case 1: time = ClassTime.N1Class; break; case 2: time = ClassTime.N2Class; break; case 3: time = ClassTime.N3Class; break; case 4: time = ClassTime.N4Class; break; case 5: time = ClassTime.N5Class; break; case 6: time = ClassTime.N6Class; break; case 7: time = ClassTime.N7Class; break; case 8: time = ClassTime.N8Class; break; case 9: time = ClassTime.N9Class; break; case 10: time = ClassTime.N10Class; break; case 11: time = ClassTime.N11Class; break; case 12: time = ClassTime.N12Class; break; default: time = ClassTime.N6Class; break; } return time; } /** * 日期和周几的转换 * * @param date 周几 * @return 周几的枚举类 */ public static ClassDay getClassDay(int date) { ClassDay classDay; switch (date) { case 1: classDay = ClassDay.Monday; break; case 2: classDay = ClassDay.Tuesday; break; case 3: classDay = ClassDay.Wednesday; break; case 4: classDay = ClassDay.Thursday; break; case 5: classDay = ClassDay.Friday; break; case 6: classDay = ClassDay.Saturday; break; case 7: classDay = ClassDay.Sunday; break; default: classDay = ClassDay.Sunday; } return classDay; } public static int getClassDay(ClassDay day) { return day.value; } /** * 构建横向周列表时使用 * * @param date 日期 * @param week 周数 * @param position 周几 * @return 返回构造样式 */ public static CharSequence getHtmlParseTitle(String date, int week, int position) { String[] weeks = {"一", "二", "三", "四", "五", "六", "日"}; String colorWeek = ClassTableDefaultInfo.defaultBackground; String colorDay = ClassTableDefaultInfo.defaultDayColor; if (position == week) { colorWeek = colorDay = ClassTableDefaultInfo.defaultCurBackground; } return Html.fromHtml("<font color=" + colorWeek + "><b>周" + weeks[position - 1] + "</b></font>" + "<br/>" + "<small><font color=" + colorDay + ">" + getDateStr(date, position - week) + "</font></small>"); } /** * 绘制左侧时间线 * * @param time 时间 * @param position 那节课? * @return 构建样式 */ public static CharSequence getHtmlParseTime(String time, int position) { return Html.fromHtml("<small><font color='" + ClassTableDefaultInfo.defaultDayColor + "'>" + time + "</font></small>" + "<br/>" + "<b><font color='" + ClassTableDefaultInfo.defaultTimeLineNumColor + "'>" + position + "</font></b>"); } public static String getDateStr(String day, int dayAddNum) { SimpleDateFormat df = new SimpleDateFormat("MM-dd"); Date nowDate = null; try { nowDate = df.parse(day); } catch (ParseException e) { e.printStackTrace(); } Date newDate2 = new Date((nowDate != null ? nowDate.getTime() : 0) + dayAddNum * 24 * 60 * 60 * 1000); SimpleDateFormat simpleDateFormat = new SimpleDateFormat("MM-dd"); return simpleDateFormat.format(newDate2); } /** * 获取当前周数 * * @return 当前周数 */ public static int getCurWeekNum() { Calendar c = Calendar.getInstance(); c.setTime(new Date(System.currentTimeMillis())); int currentDayOfYear = c.get(Calendar.DAY_OF_YEAR) - 5; int distanceday; if (currentDayOfYear > 56 && currentDayOfYear < 244) { distanceday = currentDayOfYear - 56; } else if (currentDayOfYear > 244) { distanceday = currentDayOfYear - 244; } else { return 0; } return distanceday / 7 + 1; } }