写一个Android日历控件

本文介绍如何在Android中创建一个可完全自定义的日历控件,包括使用org.joda.time库来定位日期和周,以及构建日历月视图的方法。通过分析和实现过程,展示了从获取某一天的周到构建包含该天的月的过程,同时讨论了如何在显示时处理跨月的周问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

日历是一个常用控件,一般而言我们会通过两种途径来得到,其一是Android原生控件CalendarView,其二是在网上找一些第三方的日历控件。但这两种都有同样的不足,也即不好自定义,比如添给某段日期加个标记,或加一个中国农历,等等。最佳的,是自己写一个,可以完全自定义,无论以后项目怎么扩展,自己心里都有底。

分析一下,日期本身是”年月日“,但我们要写日历,最重要的是“周”,只要我们能够做到如下定位能力便可以轻易写出日历:1、通过年月日来标示某一天,通过加N或减N来得到之前或之后的第N天;2、根据某一天得到该周。这就够了。

在网上搜索,对Java7以下自带的time+date普遍评价不高,有一个叫org.joda.time的库受到推荐,并且恰恰具有前面两项定位能力。

我们只需要两步来实现日历:1、根据某天得到包含该天的周;2、根据某天得到包含该天的月。

第一步,根据某天得到该周:

public CalendarWeek getWeekOfDay(LocalDate localDate){

    LocalDate monday = localDate.withDayOfWeek(DateTimeConstants. MONDAY);
    LocalDate tuesday = localDate.withDayOfWeek(DateTimeConstants. TUESDAY);
    LocalDate wedn
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值