android 周日历控件加事件动态添加

来源:互联网 发布:java如何读取zip文件 编辑:程序博客网 时间:2024/06/14 15:43

周日历控件根据那个老牛逼的 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