农历计算类

农历计算的算法,来源于: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


[待续]


更多相关文章

  1. Android(安卓)初识Retrofit
  2. android图片上传springMvc
  3. android 之simpleAdapter详解
  4. Android(安卓)微博登录
  5. Android中读取电话本Contacts联系人的所有电话号信息
  6. Android模拟 HTTP multipart/form-data 请求协议信息实现图片上
  7. Android模拟 HTTP multipart/form-data 请求协议信息实现图片上
  8. Android中读取电话本Contacts联系人的所有电话号信息
  9. Android中读取电话本Contacts联系人的所有电话号信息

随机推荐

  1. 详解 Android 的 Activity 组件
  2. [置顶] Android 安装详解---Mr.Zhang
  3. Android安全机制探讨
  4. Android 安全攻防(二): SEAndroid bionic
  5. android之shape
  6. “加一”项目总结--android使用篇(二)(转)
  7. Android ROM研究---如何在ubuntu下下载姜
  8. 【译】在JitPack发布自己的Android库
  9. [Android] 对android:layout_weight的一
  10. 修改android公共控件和后台服务