周日历控件根据那个老牛逼的 https://github.com/alamkanak/Android-Week-View。项目需要,修改了好几个夜晚,苦逼呀
主要由两部分自定义控件组成:日期 加 时间 两部分组成 ;
给出主要activity 代码: 随后附带源码
说两个重点,下载源码可以对照看:
动态数据的 我是在onResume() 实现。主要是calendar 格式要统一 :
public Calendar DateFrom(String dataString) {
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm");
Date date;
Calendar calendar = null;
try {
date = sdf.parse(dataString);
calendar = Calendar.getInstance();
calendar.setTime(date);
} catch (Exception e) {
// toast("获取日期出错" + e.toString());
}
return calendar;
}
事件的填充主要在
@Override
public List onMonthChange(int newYear, int newMonth) {
这个事件里面执行;
比较日期少不了的
private boolean eventMatches(WeekViewEvent event, int year, int month) {
return (event.getStartTime().get(Calendar.YEAR) == year && event.getStartTime().get(Calendar.MONTH) == month - 1) || (event.getEndTime().get(Calendar.YEAR) == year && event.getEndTime().get(Calendar.MONTH) == month - 1);
}
@Override
public void onEmptyViewLongPress(final Calendar time) {
// for (WeekViewEvent oneevent : events) {
// if (time.before(oneevent.getEndTime()) && endTime.after(oneevent.getStartTime())
// && time.equals(oneevent.getEndTime()) && endTime.equals(oneevent.getStartTime())) {
// toast("点击选择为一小时和当前事件冲突");
// return;
// }
//
// }
//创建一个可编辑对象
// for (WeekViewEvent oneevent : events) {
// if (oneevent.getId() <= 0) {
// events.remove(oneevent);
// getWeekView().notifyDatasetChanged();
// }
// }
int minute=time.get(Calendar.MINUTE);
if(0<=minute&&minute<15){
time.set(Calendar.MINUTE, 0);
}else if(15<=minute&&minute<30){
time.set(Calendar.MINUTE, 15);
}else if(30<=minute&&minute<45){
time.set(Calendar.MINUTE, 30);
}else if(45<=minute&&minute<60) {
time.set(Calendar.MINUTE, 45);
}
final Calendar endTime = (Calendar) time.clone();
endTime.add(Calendar.HOUR, 1);
WeekViewEvent event = new WeekViewEvent(0, "无标题", time, endTime);
event.setColor(getResources().getColor(R.color.event_color_01));
events.add(event);
getWeekView().notifyDatasetChanged();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
startUrlTime = sdf.format(time.getTime());
endUrlTime = sdf.format(endTime.getTime());
// getHandler().postDelayed(new Runnable() {
// public void run() {
// Map<String, Object> data = new HashMap<>();
// SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
// String startUrlTime = sdf.format(time.getTime());
// String endUrlTime = sdf.format(endTime.getTime());
// data.put("url", KConstants.BASCALENDAREVENT +
// "start=" + startUrlTime + "&end=" + endUrlTime + "&taskId=&taskName=&taskCode=&isFinish=&isMobile=1");
// startActivity(WebViewActivity.class, data);
// }
// }, 500);
}
这段代码是动态的添加手势长按,创建新的事件模块的。重点就是这些,全是都是回调事件,注意就行了,
源码下载地址:http://download.csdn.net/download/u012922981/10159287
半夜了!睡觉!!2017年12月14日23:33:12