Android(安卓)日历开发教程[五]
16lz
2022-07-03
农历计算类
农历信息文本显示类农历计算的算法,来源于:http://sean.o4u.com/ap/calendar/,具体的代码基本与来源处的 javascript 相同,差不多只是语言上的转换而已。
将这个类命名为:LunarCalendar,放到包 module 下,具体的代码就不列出了,这里帖一下 public 成员:
字段概要
字段 限定符和类型 字段和说明 static long
DAY_MILLIS
一天的毫秒数static long
LUNAR_BASE_MILLIS
农历1900-1-1 的公历毫秒数(与公历1970-1-1的偏移值)static int
LUNAR_DAY
农历日字段static int
LUNAR_IS_LEAP
农历是否为闰月字段static int
LUNAR_MONTH
农历月字段static int
LUNAR_YEAR
农历年字段
构造器概要
构造器 构造器和说明 LunarCalendar()
LunarCalendar(java.util.Calendar date)
LunarCalendar(java.util.Date date)
LunarCalendar(long milliSeconds)
方法概要
方法 限定符和类型 方法和说明 int
getGregorianDate(int field)
返回公历信息
参照:Calendar.get(int)
int
getGregorianFestival()
返回当前的公历节日序号,从0开始,如果不是公历节日,返回-1int
getLunar(int field)
获取农历信息int
getLunarFestival()
返回当前的农历节日序号,从0开始,如果不是农历节日,返回-1static int
getMaxYear()
支持范围最大年份static int
getMinYear()
支持范围最小年份static int
getSolarTerm(int year, int index)
取得二十四节气long
getTimeInMillis()
boolean
isToday()
是否为今天java.lang.String
toString()
农历计算类返回的信息都是数字,需要转换成相应的字符,为此创建 DateFormatter 类,也同样保存到包 module 下。这个类不保存字符串,所有的字符串都放在资源文件 res/string.xml 中,各项定义成 string array。下面是这个类的代码片段:
private Resources resources;public DateFormatter(Resources resources) {this.resources = resources;}private String getArrayString(int resid, int index) {return resources.getStringArray(resid)[index];}public CharSequence getDayName(LunarCalendar lc) {StringBuilder result = new StringBuilder();int day = lc.getLunar(LunarCalendar.LUNAR_DAY);if (day < 11) {result.append(getArrayString(R.array.chinesePrefix, 0));result.append(getArrayString(R.array.chineseDigital, day));} else if (day < 20) {result.append(getArrayString(R.array.chinesePrefix, 1));result.append(getArrayString(R.array.chineseDigital, day - 10));} else if (day == 20) {result.append(getArrayString(R.array.chineseDigital, 2));result.append(getArrayString(R.array.chineseDigital, 10));} else if (day < 30) {result.append(getArrayString(R.array.chinesePrefix, 2));result.append(getArrayString(R.array.chineseDigital, day - 20));} else {result.append(getArrayString(R.array.chineseDigital, 3));result.append(getArrayString(R.array.chineseDigital, 10));}return result;}
代码比较简单,不作具体说明。
----------------------------
代码的重构刚完成,不过却有点问题,主要是 Cell 的背景,原来是用 selector -> shape,现在改为 shape -> color selector,得到焦点时不能更换背景色,待查。
代码的说明暂停,先放出 Project 的完整包文件下载:http://download.csdn.net/detail/mostone/4955556
[待续]
更多相关文章
- Android(安卓)初识Retrofit
- android图片上传springMvc
- android 之simpleAdapter详解
- Android(安卓)微博登录
- Android中读取电话本Contacts联系人的所有电话号信息
- Android模拟 HTTP multipart/form-data 请求协议信息实现图片上
- Android模拟 HTTP multipart/form-data 请求协议信息实现图片上
- Android中读取电话本Contacts联系人的所有电话号信息
- Android中读取电话本Contacts联系人的所有电话号信息