日历签到demo 实现记录

先来效果图:


日历部分参考了网络上找到的一个日历类,里面抽象出来了好多方法,基本上满足了对签到的需求,如有需要也可以根据项目实际情况进行定制。

public class SignCalendar extends ViewFlipper implements  android.view.GestureDetector.OnGestureListener

该类继承自ViewFlipper,能够很好的实现不同月的日历之间的切换和动画,还实现了手势监听。

首先介绍一下该类的一些主要方法:

 private void drawFrame(LinearLayout oneCalendar);//画日历的框架

 private void setCalendarDate();//填充日历,包括日期、背景和标记

public synchronized void nextMonth() ;//滑动时显示下一个月

 public synchronized void lastMonth() ;//滑动时显示上一个月

//设置和移除日期标记的各种方法

 public void addMark(Date date, int id);public void removeMark(Date date);

public void addMark(String date, int id) ; public void removeMark(String date);

public void addMarks(Date[] date, int id);public void removeAllMarks();

public void addMarks(List<String> date, int id);

//设置和移除日期背景的方法

public void setCalendarDayBgColor(Date date, int color); public void removeCalendarDayBgColor(Date date);

 public void setCalendarDayBgColor(String date, int color); public void removeCalendarDayBgColor(String date);

public void setCalendarDaysBgColor(List<String> date, int color);public void removeAllBgColor();

 public void setCalendarDayBgColor(String[] date, int color);

public boolean hasMarked(String date);

//移除标记和背景设置

 public void clearAll();

此外还提供了两个回调接口:

  private OnCalendarClickListener onCalendarClickListener; // 日历翻页回调
  private OnCalendarDateChangedListener onCalendarDateChangedListener; // 日历点击回调,根据需要添加

接下来,介绍一下日历框架的绘制,整个布局是在代码里实现的,先看下drawFrame方法吧:

  private void drawFrame(LinearLayout oneCalendar) {

    // 添加周末线性布局
    LinearLayout title = new LinearLayout(getContext());
    title.setBackgroundColor(COLOR_BG_WEEK_TITLE);
    title.setOrientation(LinearLayout.HORIZONTAL);
    LinearLayout.LayoutParams layout =
        new LinearLayout.LayoutParams(MarginLayoutParams.MATCH_PARENT,
            
  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值