项目中突然需要由经期推算需求,在搜索到的代码,和现在的需求有点出入,经过几次的修改,一直出问题,所以仿照已有的代码,重新写一份。
设计到的知识点
- 日期的计算(Calendar)
- 绘制日历
- 对日历中的日期添加状态(安全期、月经期和排卵期)
Calendar
Android中用到时间的时候,很有可能用到的类。
获取一些基本的时间
final Calendar c = Calendar.getInstance();
mYear = c.get(Calendar.YEAR); //获取当前年份
mMonth = c.get(Calendar.MONTH);//获取当前月份
mDay = c.get(Calendar.DAY_OF_MONTH);//获取当前月份的日期号码
mHour = c.get(Calendar.HOUR_OF_DAY);//获取当前的小时数
mMinute = c.get(Calendar.MINUTE);//获取当前的分钟数其他的方法介绍
- getTime:获取到Date的实例
- setTime:设置时间
- add:在当前的时间上增加/减少时间(这里是本节的重点)
绘制日历
首先绘制日期卡片(具体一天的界面)
public class DateCardView extends FrameLayout{
private TextView mDateNumText; //当月的几号
private TextView mTodayText; //今天
private ImageView mIconImage; //标志开始和结束的图标
private LinearLayout mRootView; //根视图
private LinearLayout mStateView; //显示状态的图片
public DateCardView(Context context){
super(context);
initView();
}
private void initView(){
//添加根视图
mRootView = new LinearLayout(getContext());
mRootView.setOrientation(LinearLayout.VERTICAL);
mRootView.setBackgroundResource(R.drawable.period_safe_date_view_bg);
LayoutParams rootParams = new