如何在开放的Android日历应用程序跳转到指定的日期吗

如何在开放的Android日历应用程序跳转到指定的日期吗,第1张

1DatePicker在Android中,DatePicker用来实现日期输入设置,日期的设置范围为1900年1月1日至2100年12月31日。11常用xml属性DatePicker的常用xml属性如图1所示:图1DatePicker常用xml属性其中,android:calendarViewShown[boolean]用于设置是否显示calendarview;android:endYear[int]用于设置截至日期;android:maxDate[int]用于设置最大的日期;android:minDate[int]用于设置最小的日期;android:spinnersShown[boolean]用于设置是否显示spinners;android:startYear[int]用于设置起始日期。12常用方法DatePicker的常用方法有以下一些:(1)publicCalendarViewgetCalendarView();//获取CalendarView(2)publicbooleangetCalendarViewShown();//获取CalendarView是否显示(3)publicintgetDayOfMonth();//获取当前日期的日(4)publiclonggetMaxDate();//获取最大日期(5)publiclonggetMinDate();//获取最小日期(6)publicintgetMonth();//获取当前日期的月(7)publicbooleangetSpinnersShown();//获取Spinners是否显示(8)publicintgetYear();//获取当前日期的年(9)publicvoidinit(intyear,intmonthOfYear,intdayOfMonth,DatePickerOnDateChangedListeneronDateChangedListener);//初始化日期(10)publicvoidsetCalendarViewShown(booleanshown);//设置是否显示CalendarView(11)publicvoidsetMaxDate(longmaxDate);//设置最大日期(12)publicvoidsetMinDate(longminDate);//设置最小日期(13)publicvoidsetSpinnersShown(booleanshown);//设置是否显示Spinners(14)publicvoidupdateDate(intyear,intmonth,intdayOfMonth);//更新当前日期2TimePicker在Android中,TimePicker用来实现时间输入设置,可以选择12或24小时模式。TimePicker的常用方法有以下一些:(1)publicIntegergetCurrentHour();//获取当前时间的小时(2)publicIntegergetCurrentMinute();//获取当前时间的分钟(3)publicbooleanis24HourView();//获取是否为24小时模式(4)publicvoidsetCurrentHour(IntegercurrentHour);//设置当前时间的小时(5)publicvoidsetCurrentMinute(IntegercurrentMinute);//设置当前时间的分钟(6)publicvoidsetIs24HourView(Booleanis24HourView);//设置24小时模式3DatePickerDialog在Android中,DatePickerDialog用来显示日期对话框。DatePickerDialog的常用方法有以下一些:(1)publicDatePickergetDatePicker();//获取DatePicker中的日期值(2)publicvoidonClick(DialogInterfacedialog,intwhich);//响应对话框中的点击事件(3)publicvoidonDateChanged(DatePickerview,intyear,intmonth,intday);//响应日期改变事件(4)publicvoidupdateDate(intyear,intmonthOfYear,intdayOfMonth);//更新当前日期4TimePickerDialog在Android中,TimePickerDialog用来显示时间对话框。TimePickerDialog的常用方法有以下一些:(1)publicvoidonClick(DialogInterfacedialog,intwhich);//响应对话框中的点击事件(2)publicvoidonTimeChanged(TimePickerview,inthourOfDay,intminute);//响应时间改变事件(3)publicvoidupdateTime(inthourOfDay,intminuteOfHour);//更新当前时间5AnalogClock在Android中,AnalogClock用于显示指针式时钟,该时钟仅有时钟和分钟两个指针。6DigitalClock在Android中,DigitalClock用来显示数字式时钟,显示格式为HH:MM:SSAM/PM。

void setCalendarViewShown(boolean shown),Sets whether the CalendarView is shown

你的采纳是我前进的动力,

记得好评和采纳,答题不易,互相帮助,

手机提问的朋友在客户端右上角评价点(满意)即可

如果你认可我的回答,请及时点击(采纳为满意回答)按钮!!

因为项目需要,上github找了不少日历控件,最终敲定了MaterialCalendarView。

首先昵,要说下开源控件使用的好处,我感觉大致有以下几个方面:

1)网上有现成的为啥不去用,你觉得你自己写的比别人牛逼吗?

2)涉及年月日日期处理,滚动事件,相互交错,没有紧密的逻辑思维去构架,肯定漏洞百出,想想数不尽的bug,不寒而栗。

3)最关键的是,我懒,我懒,我懒!自己写费时费力,牛逼的日历组件都可以做一个app了,再说我只是想要一个选择日期功能。

说了一堆废话,现在我们来分析源码了。。。。。

老外写的东西层次感还是很分明的,我大致给它分为三个部分:日期的格式化,自定义的span效果,以及日历控件的实现。不用说日历实现是最重要的一部分了,我们由简入繁,从日期分析开始。

1)format,顾名思义,格式化,达到我们想要的日期展示样式。

format包中有八个java文件,其中有三个接口,五个实现类。

三个接口:

DayFormatter 通过自定义的CalendarDay对象,得到一个日期的字符串标签。其实现类是DateFormatDayFormatter。

TitleFormatter 通过自定义的CalendarDay对象,得到一个包含年月的字符串标签,作为MaterialCalendarView的标签。其实现类为DateFormatTitleFormatter和MonthArrayTitleFormatter。

WeekDayFormatter 将一个日期中CalendarDAY_OF_YEAR对应的值转换成一个字符串标签。其实现类是ArrayWeekDayFormatter。

这三个接口都只有一个方法,有的提供了一个公有的默认实现类。其功能就是将日期的数值转换成本地化的可读字符串。在这里我可以想到的是,因为使用了接口,我们可以很灵活的替换其实现类,而不用更改日历控件中的代码,实现定制化的需求。

2)span

spans包中只有一个类DotSpan,实现了在文字下方画一个小圆点的效果。这是一个示例,我们可以模仿它来实现自己想要的效果。比如,如果想在日期的下方用一行小字显示,用span是很方便的一种实现方式。

3)MaterialCalendarView

这个包中有16个Java文件,是此开源控件主要的代码所在。其中,组合成最终控件的四个最重要的类是DayView,WeekDayView,MonthView和MaterialCalendarView。

DayView 继承自CheckedTextView。之所以用CheckedTextView而不是TextView,是为了使用androidRattrstate_checked状态,在日期被选中时显示不同的背景。

WeekDayView 继承自TextView,用于在日历的第一排显示星期的标签。

MonthView 继承自ViewGroup,它包含7个WeekDayView和42个DayView,即一个77的矩形,其中每一个矩形称为一个tile。

MaterialCalendarView 继承自ViewGroup,包含上方的title和下方的ViewPager。这个控件的宽度如果不能被7整除,那么它会自动缩小其内容,并居中。

老外实现MaterialCalendarView层次感非常强烈,注释清楚,本人愚钝啊,时刻不丢粗心的毛病,改造日历期间很多功能点找不到,修改日历的disable事件,点击效果,日历字体大小。。。。。等等。好了,废话不多说,先来一份改造好的日历图,压压惊!左边是我改造的,右边是我们伟大开源作者的。(提倡开源,一直很欣赏这些懂的分享的人,只有弱者才会害怕自己的东西被人拿去)

左边的日历我针对自己项目进行了定制设计,调节了日历大小,之前的dayview是宽高等比大小,宽度是平分屏幕,所以这样导致高度很高,相互之间间隔比较大,我通过monthview的onMeasure方法,将高度修改为

int childHeightMeasureSpec = MeasureSpecmakeMeasureSpec(

(int)(measureTileSize065),

MeasureSpecEXACTLY

);

这样长宽就3/2了,这个时候只是第一步,仅仅只有monthview大小变了,整体的view大小还没有变,所以我们还要处理下MaterialCalendarView的onMeasure 方法,对整体高度进行修改

以上就是关于如何在开放的Android日历应用程序跳转到指定的日期吗全部的内容,包括:如何在开放的Android日历应用程序跳转到指定的日期吗、android日期控件datePicker如何去掉右边的、Android开源日历,materialcalendarview的选中背景如何缩小等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9491830.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存