Android 日历开发教程[五]
2013-01-03 21:47
495 查看
农历计算类
农历计算的算法,来源于:http://sean.o4u.com/ap/calendar/,具体的代码基本与来源处的 javascript 相同,差不多只是语言上的转换而已。
将这个类命名为:LunarCalendar,放到包 module 下,具体的代码就不列出了,这里帖一下 public 成员:
字段
构造器
方法
农历信息文本显示类
农历计算类返回的信息都是数字,需要转换成相应的字符,为此创建 DateFormatter 类,也同样保存到包 module 下。这个类不保存字符串,所有的字符串都放在资源文件 res/string.xml 中,各项定义成 string array。下面是这个类的代码片段:
代码比较简单,不作具体说明。
----------------------------
代码的重构刚完成,不过却有点问题,主要是 Cell 的背景,原来是用 selector -> shape,现在改为 shape -> color selector,得到焦点时不能更换背景色,待查。
代码的说明暂停,先放出 Project 的完整包文件下载:http://download.csdn.net/detail/mostone/4955556
[待续]
农历计算的算法,来源于: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开始,如果不是公历节日,返回-1 |
int | getLunar(int field) 获取农历信息 |
int | getLunarFestival() 返回当前的农历节日序号,从0开始,如果不是农历节日,返回-1 |
static 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 开发教程之日历项目实践(一)
- Android 日历开发教程[一]
- android 开发教程之日历项目实践(二)
- Android 日历开发教程[二]
- android 开发教程之日历项目实践(三)
- Android 日历开发教程[四]
- android 开发教程之日历项目实践
- Android 日历开发教程[六]
- Android 日历开发教程[三]
- Android 日历开发教程[七] 修正后代码下载
- 【整理】InfoQ的Android开发周报之教程和开源项目
- Android 开发环境配置图文教程(jdk+eclipse+android sdk)
- 【Android 开发教程】发送Email
- 【Android 开发教程】在Activity和Service之间建立链接
- Android快速开发工具GsonFormat使用教程
- Android开发教程笔记 (连载 一 )
- ArcGIS Runtime for Android开发教程V2.0(5)基础篇---图层
- 图片视图(ImageView)——Mars Android开发视频教程之第一季第十一集(重)
- android开发教程 Dialog
- Windows系统部署 Android 开发环境以及验证之傻瓜式教程(SDK+Eclipse+ADT)