Android 自定义控件之可多选课程日历CalendarView

本文介绍了一款可多选课程的自定义Android日历控件CalendarView的开发过程,包括效果图、开发环境、代码实现和使用步骤。开发者在Android Studio 2.0环境下,为满足多选课程需求,创建了这个可多选的日历组件,并提供了GitHub源码链接。
摘要由CSDN通过智能技术生成

转载请标明出处: http://blog.csdn.net/airsaid/article/details/52139045
本文出自:周游的博客

效果图

这里写图片描述

开发环境

IDE版本:AndroidStudio2.0
物理机版本:Win7旗舰版(64位)

前言

最近的项目中用到了一个课程选择的日历View,于是在网上搜了搜自定义日历View,发现基本上都是单选的,不能够满足项目中的需求。于是自己重新造了个轮子,写了个可以被多选的自定义日历View。最后面会给出GitHub地址。

代码实现

package widget;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.MotionEvent;
import android.view.View;

import com.arisaid.calendarview.R;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.List;

/**
 * Created by zhouyou on 2016/7/25.
 * Class desc:
 *
 * 自定义日历View,可多选
 */
public class CalendarView extends View {
   

    // 列的数量
    private static final int NUM_COLUMNS    =   7;
    // 行的数量
    private static final int NUM_ROWS       =   6;

    /**
     * 可选日期数据
     */
    private List<String> mOptionalDates;

    /**
     * 以选日期数据
     */
    private List<String> mSelectedDates = new ArrayList<>();

    // 背景颜色
    private int mBgColor = Color.parseColor("#F7F7F7");
    // 天数默认颜色
    private int mDayNormalColor = Color.parseColor("#0070F8");
    // 天数不可选颜色
    private int mDayNotOptColor = Color.parseColor("#CBCBCB");
    // 天数选择后颜色
    private int mDayPressedColor = Color.WHITE;
    // 天数字体大小
    private int mDayTextSize = 14;
    // 是否可以被点击状态
    private boolean mClickable = true;

    private DisplayMetrics mMetrics;
    private Paint mPaint;
    private int mCurYear;
    private int mCurMonth;
    private int mCurDate;

    private int mSelYear;
    private int mSelMonth;
    private int mSelDate;
    private int mColumnSize;
    private int mRowSize;
    private int[][] mDays;

    // 当月一共有多少天
    private int mMonthDays;
    // 当月第一天位于周几
    private 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值