当前位置: 源码素材网 » Android教程 » 详情页

Android 在日历的基础上实现签到功能

  •   时间:2019-04-26
  • 概述:签到 日历

这是一个APP签到功能的实例,本实例通过在日历中进行标注,实现日历签到功能。运行实例,单击“签到”按钮,会在日历中当天的位置添加“签到”印记, 单击向左箭头或者向右滑动会切换到前一个月份。

// 设置默认选中的日期
private String date = null;
private TextView popupwindow_calendar_month;
private SignCalendar calendar;
private Button btn_signIn;
private List<String> list = new ArrayList<String>(); //设置标记列表
DBManager dbManager;
boolean isinput = false;
private String date1 = null;//单天日期
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    // 初始化DBManager
    dbManager = new DBManager(this);
    //日期格式   格式为 “2016-12-03” 标准DATE格式
    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    //获取当前时间
    Date curDate = new Date(System.currentTimeMillis());
    //设置时间格式为设置格式
    date1 = formatter.format(curDate);
    //初始化显示年月控件
    popupwindow_calendar_month = (TextView) findViewById(R.id.popupwindow_calendar_month);
    //签到按钮
    btn_signIn = (Button) findViewById(R.id.btn_signIn);
    //日期控件
    calendar = (SignCalendar) findViewById(R.id.popupwindow_calendar);
    //设置当前年月
    popupwindow_calendar_month.setText(calendar.getCalendarYear() + "年"
            + calendar.getCalendarMonth() + "月");
    if (null != date) {
        int years = Integer.parseInt(date.substring(0,
                date.indexOf("-")));
        int month = Integer.parseInt(date.substring(
                date.indexOf("-") + 1, date.lastIndexOf("-")));
        popupwindow_calendar_month.setText(years + "年" + month + "月");
        calendar.showCalendar(years, month);
        calendar.setCalendarDayBgColor(date, R.color.white);
    }
    //添加标记
    add("2016-11-04");
    add("2016-11-05");
    add("2016-11-07");
    add("2016-11-10");
    add("2016-11-12");
    add("2016-12-02");
    // 添加日期标注
    query();
    if (isinput) {
        //设置签到按钮文字
        btn_signIn.setText("今日已签,明日继续");
        //设置签到按钮背景
        btn_signIn.setBackgroundResource(R.drawable.button_gray);
        //禁止按钮点击
        btn_signIn.setEnabled(false);
    }
    btn_signIn.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Date today = calendar.getThisday();
            SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd");
            //将当前日期标示出来
            add(df.format(today));
            // 添加日期标注
            query();
            HashMap<String, Integer> bg = new HashMap<String, Integer>();
            //设置当天日期背景颜色
            calendar.setCalendarDayBgColor(today, R.drawable.bg_sign_today);
            //设置签到按钮文字
            btn_signIn.setText("今日已签,明日继续");
            //设置签到按钮背景
            btn_signIn.setBackgroundResource(R.drawable.button_gray);
            //禁止按钮点击
            btn_signIn.setEnabled(false);
        }
    });
    //监听当前月份
    calendar.setOnCalendarDateChangedListener(new SignCalendar.OnCalendarDateChangedListener() {
        public void onCalendarDateChanged(int year, int month) {
            popupwindow_calendar_month
                    .setText(year + "年" + month + "月");
        }
    });
}

//添加签到日期
public void add(String date) {
    ArrayList<sqlit> persons = new ArrayList<sqlit>();
    sqlit person1 = new sqlit(date, "true");
    persons.add(person1);
    dbManager.add(persons);
}
//签到日期显示签到图案
public void query() {
    List<sqlit> persons = dbManager.query();
    for (sqlit person : persons) {
        list.add(person.date);
        if (date1.equals(person.getDate())) {
            isinput = true;
        }
    }
    calendar.addMarks(list, 0);
}

以上仅是核心的代码,代码文件较多,其它相关功能代码可在此下载:

Android 实现的日历签到功能

    相关声明:

      若“Android 在日历的基础上实现签到功能”有损您的权益,请告之我们删除内容。
      部分文章来源于网络,版权归原作者所有。