关于Android日历视图控件CalendarView

本文介绍了Android的CalendarView控件,强调其高性能、高度可定制的特点,支持周视图、标记、颜色定制、农历等功能。通过代码示例展示了如何实现日期选择、添加监听事件、获取所选日期,并探讨了CalendarView的各种属性和方法,以及如何利用其插拔式设计创建不同风格的日历。最后,鼓励开发者根据需求自由定制日历样式。
摘要由CSDN通过智能技术生成

简要介绍

CalendarView是Android上一个优雅、高度自定义、性能高效的日历控件,完美支持周视图,支持标记、自定义颜色、农历等,任意控制月视图显示、任意日期拦截条件、自定义周起始等。


CalendarView 的特性

  • 基于Canvas绘制,极速性能
  • 热插拔思想,任意定制周视图、月视图,即插即用
  • 支持单选、多选、范围选择、国内手机日历默认自动选择等选择模式
  • 支持静态、动态设置周起始,一行代码搞定
  • 支持静态、动态设置日历项高度、日历填充模式
  • 支持设置任意日期范围、任意拦截日期
  • 支持多点触控、手指平滑切换过渡,拒绝界面抖动
  • 类NestedScrolling特性,嵌套滚动
  • 既然这么多支持,那一定支持英语、繁体、简体,任意定制实现




简要实现代码与效果演示

下面展示CalendarView最简单的使用方法

<CalendarView
        android:id="@+id/calendarView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
    />

实现效果:
在这里插入图片描述




ClendarView常见属性及方法



属性 说明
android:dateTextAppearance="" 设置该日历视图的日期文字的样式
android:firstDayOfWeek="" 设置每周第一天,允许设置周一到周日任意一天作为每周的第一天
android:maxDate="" 设置该日历组件支持的最大日期,以mm/dd/yyyy格式设置指定最大日期
android:minDate="" 设置该日历组件支持的最小日期,以mm/dd/yyyy格式设置指定最小日期
android:background="" 设置整体背景颜色/图片
android:weekDayTextAppearance 工作日的文本出现在日历标题缩写



方法 说明
boolean isWeekend() 判断是不是周末,可以用不同的画笔绘制周末的样式
int getWeek() 获取星期
String getSolarTerm() 获取24节气,可以用不同颜色标记不同节日
String getGregorianFestival() 获取公历节日,自由判断,把节日换上喜欢的颜色
String getTraditionFestival() 获取传统节日
boolean isLeapYear() 是否是闰年
int getLeapMonth() 获取闰月
boolean isSameMonth(Calendar calendar) 是否相同月
int compareTo(Calendar calendar) 比较日期大小
long getTimeInMillis() 获取时间戳
int differ(Calendar calendar) 日期运算,相差多少天




简单实现日期选择

添加监听事件

在主活动中添加监听事件CalendarView.OnDateChangeListener ,在用户选择日期时触发相关效果(例:选择日期背景颜色改变)

获得具体日期

在主活动中,为其添加监听事件后

可以通过 daymonthdayOfMonth 来获得用户选择的日期的具体信息:

具体实现代码

public class MainActivity extends AppCompatActivity{
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
   
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        CalendarView calendarview = (CalendarView) findViewById(R.id.calendarview);

        calendarview.setOnDateChangeListener(new CalendarView.OnDateChangeListener() {
   
            @Override
            public void onSelectedDayChange(CalendarView view, int year, int month, int dayOfMonth) {
   
                Toast.makeText(MainActivity.this,"您选择的时间是:"+ year + "年" + month + "月" + dayOfMonth + "日",Toast.LENGTH_SHORT).show();
            }
        });
    }
}



实现效果

  • 0
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值