android 设计日历表头的算法
2015-09-30 17:19
543 查看
1.主算法如下:
private String[] getArrText() {
int dayOfWeek = TimeUtil.getDayOfWeek();
int date = TimeUtil.getDateOfMonth();
int dayOfMonth = TimeUtil.getDayOfMonth(TimeUtil.getYear(), TimeUtil.getMonth());
int dayOfMonth_Last = TimeUtil.getDayOfMonth(TimeUtil.getYear(), TimeUtil.getMonth() - 1);
for (int i = 1; i < dayOfWeek; i++) {
if ((date - (dayOfWeek - i)) > 0) {
mArrWeekText[i - 1] += TimeUtil.getDayStr((date - (dayOfWeek - i)));
} else {
mArrWeekText[i - 1] += TimeUtil.getDayStr(dayOfMonth_Last - (dayOfWeek - i) + 1);
}
}
int startId = 1;
for (int i = dayOfWeek; i <= 7; i++) {
if ((date + (i - dayOfWeek)) > dayOfMonth) {
mArrWeekText[i - 1] += TimeUtil.getDayStr(startId);
startId++;
} else {
mArrWeekText[i - 1] += TimeUtil.getDayStr(date + (i - dayOfWeek));
}
}
return mArrWeekText;
}
2.时间工具类
public class TimeUtil {
public static String getHourStr(int hour) {
if (hour < 10) {
return "0" + hour;
} else {
return "" + hour;
}
}
public static String getMinStr(int min) {
if (min < 10) {
return "0" + min;
} else {
return "" + min;
}
}
public static String getDayStr(int day) {
if (day < 10) {
return "0" + day;
} else {
return "" + day;
}
}
/**
* 根据年月获取该月份的天数
*
* @return
*/
public static int getDayOfMonth(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
int dayOfMonth = calendar.getActualMaximum(Calendar.DATE);
return dayOfMonth;
}
/**
* 获取当天是星期几
*
* @return
*/
public static int getDayOfWeek() {
Calendar calendar = Calendar.getInstance();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
switch (dayOfWeek) {
case 1:
dayOfWeek = 7;// 由于默认返回值1代表星期天
break;
default:
dayOfWeek -= 1;
break;
}
return dayOfWeek;
}
/**
* 获取当天的日期
*
* @return
*/
public static int getDateOfMonth() {
Calendar calendar = Calendar.getInstance();
int dateOfMonth = calendar.get(Calendar.DATE);
return dateOfMonth;
}
/**
* 获取当年年份
*
* @return
*/
public static int getYear() {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
return year;
}
/**
* 获取当月月份
*
* @return
*/
public static int getMonth() {
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH);
return month + 1;
}
public boolean isToday(){
return true;
}
}
private String[] getArrText() {
int dayOfWeek = TimeUtil.getDayOfWeek();
int date = TimeUtil.getDateOfMonth();
int dayOfMonth = TimeUtil.getDayOfMonth(TimeUtil.getYear(), TimeUtil.getMonth());
int dayOfMonth_Last = TimeUtil.getDayOfMonth(TimeUtil.getYear(), TimeUtil.getMonth() - 1);
for (int i = 1; i < dayOfWeek; i++) {
if ((date - (dayOfWeek - i)) > 0) {
mArrWeekText[i - 1] += TimeUtil.getDayStr((date - (dayOfWeek - i)));
} else {
mArrWeekText[i - 1] += TimeUtil.getDayStr(dayOfMonth_Last - (dayOfWeek - i) + 1);
}
}
int startId = 1;
for (int i = dayOfWeek; i <= 7; i++) {
if ((date + (i - dayOfWeek)) > dayOfMonth) {
mArrWeekText[i - 1] += TimeUtil.getDayStr(startId);
startId++;
} else {
mArrWeekText[i - 1] += TimeUtil.getDayStr(date + (i - dayOfWeek));
}
}
return mArrWeekText;
}
2.时间工具类
public class TimeUtil {
public static String getHourStr(int hour) {
if (hour < 10) {
return "0" + hour;
} else {
return "" + hour;
}
}
public static String getMinStr(int min) {
if (min < 10) {
return "0" + min;
} else {
return "" + min;
}
}
public static String getDayStr(int day) {
if (day < 10) {
return "0" + day;
} else {
return "" + day;
}
}
/**
* 根据年月获取该月份的天数
*
* @return
*/
public static int getDayOfMonth(int year, int month) {
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.YEAR, year);
calendar.set(Calendar.MONTH, month - 1);
int dayOfMonth = calendar.getActualMaximum(Calendar.DATE);
return dayOfMonth;
}
/**
* 获取当天是星期几
*
* @return
*/
public static int getDayOfWeek() {
Calendar calendar = Calendar.getInstance();
int dayOfWeek = calendar.get(Calendar.DAY_OF_WEEK);
switch (dayOfWeek) {
case 1:
dayOfWeek = 7;// 由于默认返回值1代表星期天
break;
default:
dayOfWeek -= 1;
break;
}
return dayOfWeek;
}
/**
* 获取当天的日期
*
* @return
*/
public static int getDateOfMonth() {
Calendar calendar = Calendar.getInstance();
int dateOfMonth = calendar.get(Calendar.DATE);
return dateOfMonth;
}
/**
* 获取当年年份
*
* @return
*/
public static int getYear() {
Calendar calendar = Calendar.getInstance();
int year = calendar.get(Calendar.YEAR);
return year;
}
/**
* 获取当月月份
*
* @return
*/
public static int getMonth() {
Calendar calendar = Calendar.getInstance();
int month = calendar.get(Calendar.MONTH);
return month + 1;
}
public boolean isToday(){
return true;
}
}
相关文章推荐
- Android基础入门教程——2.5.5 PopupWindow(悬浮框)的基本使用
- Android反编译
- android学习路线:如何成长为高级工程师
- Android:提升ListView的运行效率
- Android之NDK开发
- Android 获取控件的宽高的靠谱方式
- Serializable和Parcelable的区别
- Android Studio如何更改SDK的版本(非gradle)
- Android TextView自动换行文字排版参差不齐的原因
- 【解决方案】Android图片加载中drawable等图片资源报错,提示找不到该资源
- android HAL 详解
- Android中SharedPreferences的apply()与commit()的区别
- Android常用权限说明
- Android 矢量图(VectorDrawable)及动画(AnimatedVectorDrawable)
- Android中Input型输入设备驱动原理分析<一>
- android学习--------Service
- Hello, Android 深入(一)
- Android Studio如何发布APK
- 来自知乎的Android学习总结
- Android清除本地数据缓存代码