这篇文章主要为大家详细介绍了机器人自定义日历效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
因为工作功能需求,自定义一个日历,效果如下,点击选中日历
使用开源代码库上面一个前辈的框架
实现com。内克尔。ncalendar:ncalendar:5。0 .0 '
实现com。github。编码结束:PopupLayout:v 1.0 '//pop布局
框架使用基本类型地址,大家可以根据需要学习修改:地址
自定义日历的可扩展标记语言文件
?可扩展标记语言版本='1.0 '编码='utf-8 '?
Android x .约束布局。小部件。约束布局xmlns:Android=' http://模式。安卓。' com/apk/RES/Android '
xmlns:app=' http://模式。安卓。' com/apk/RES-auto '
xmlns:tools=' http://模式。安卓。' com/tools '
Android:layout _ width=' match _ parent '
Android:layout _ height=' wrap _ content '
工具:上下文='。'日历活动'
视角
android:id='@ id/title_bar '
android:layout_width='320dp '
android:layout_height='40dp '
Android:background=' @ drawable/calendar _ BG '
app:layout _ constraint end _ toEndOf=' parent '
app:layout _ constraint start _ to start of=' parent '
app:layout _ constraint top _ toTopOf=' parent '/
文本视图
android:id='@ id/year '
Android:layout _ width=' wrap _ content '
Android:layout _ height=' wrap _ content '
Android:layout _ margin start=' 18dp '
android:text='2018 '
android:textColor='#ffffff '
android:textSize='16sp '
app:layout _ constraint bottom _ to bottom of=' @ id/title _ bar '
app:layout _ constraint start _ to start of=' @ id/title _ bar '
app:layout _ constraint top _ toTopOf=' @ id/title _ bar '/
文本视图
android:id='@ id/month '
Android:layout _ width=' wrap _ content '
Android:layout _ height=' wrap _ content '
Android:layout _ margin start=' 18dp '
android:text='四'
android:textColor='#ffffff '
android:textSize='18sp '
app:layout _ constraint bottom _ to bottom of=' @ id/title _ bar '
app:layout _ constraint end _ toEndOf=' @ id/title _ bar '
app:layout _ constraint start _ to start of=' @ id/title _ bar '
app:layout _ constraint top _ toTopOf=' @ id/title _ bar '/
文本视图
android:id='@ id/monthName '
Android:layout _ width=' wrap _ content '
Android:layout _ height=' wrap _ content '
android:text='月'
android:textColor='#ffffff '
android:textSize='18sp '
app:layout _ constraint bottom _ to bottom of=' @ id/title _ bar '
app:layout _ constraint start _ toEndOf=' @ id/month '
app:layout _ constraint top _ toTopOf=' @ id/title _ bar '/
com.necer.view.WeekBar
android:id='@ id/week '
android:layout_width='320dp '
Android:layout _ height=' wrap _ content '
android:layout_marginTop='10dp '
app:layout _ constraint end _ toEndOf=' parent '
app:layout _ constraint start _ to start of=' parent '
app:layout _ constraint top _ toBottomOf=' @ id/title _ bar '/
com。内克尔。日历。月历
android:id='@ id/month_calendar '
android:layout_width='320dp '
android:layout_height='280dp '
app:layout _ constraint end _ toEndOf=' parent '
app:layout _ constraint start _ to start of=' parent '
app:layout _ constraint top _ toBottomOf=' @ id/week '/
视角
android:id='@ id/bottom_view '
android:layout_width='320dp '
android:layout_height='40dp '
Android:background=' @ drawable/calendar _ BG _ bottom '
app:layout _ constraint end _ toEndOf=' parent '
app:layout _ constraint start _ to start of=' parent '
app:layout _ constraint top _ toBottomOf=' @ id/month _ calendar '/
文本视图
android:id='@ id/lastYear '
android:layout_width='0dp '
Android:layout _ height=' wrap _ content '
安卓:重力='中心'
android:onClick='去年'
android:text='上一年'
android:textColor='#ffffff '
app:layout _ constraint bottom _ to bottom of=' @ id/bottom _ view '
app:layout _ constraint end _ to start of=' @ id/divider one '
app:layout _ constraint start _ to start of=' @ id/bottom _ view '
app:layout _ constraint top _ toTopOf=' @ id/bottom _ view '/
视角
android:id='@ id/dividerOne '
android:layout_width='1dp '
android:layout_height='40dp '
android:background='#ffffff '
app:layout _ constraint end _ to start of=' @ id/last month '
app:layout _ constraint start _ toEndOf=' @ id/去年'
app:layout _ constraint top _ toTopOf=' @ id/bottom _ view '/
文本视图
android:id='@ id/lastMonth '
android:layout_width='0dp '
Android:layout _ height=' wrap _ content '
安卓:重力='中心'
android:onClick='上个月'
android:text='上个月'
android:textColor='#ffffff '
app:layout _ constraint bottom _ to bottom of=' @ id/bottom _ view '
app:layout _ constraint end _ to start of=' @ id/divider two '
app:layout _ constraint start _ toEndOf=' @ id/divider one '
app:layout _ constraint top _ toTopOf=' @ id/bottom _ view '/
视角
android:id='@ id/dividerTwo '
android:layout_width='1dp '
android:layout_height='40dp '
android:background='#ffffff '
app:layout _ constraint end _ to start of=' @ id/下月'
app:layout _ constraint start _ toEndOf=' @ id/上月'
app:layout _ constraint top _ toTopOf=' @ id/bottom _ view '/
文本视图
android:id='@ id/nextMonth '
android:layout_width='0dp '
Android:layout _ height=' wrap _ content '
安卓:重力='中心'
android:text='下个月'
android:textColor='#ffffff '
android:onClick='下个月'
app:layout _ constraint bottom _ to bottom of=' @ id/bottom _ view '
app:layout _ constraint end _ to start of=' @ id/divider three '
app:layout _ constraint start _ toEndOf=' @ id/divider two '
app:layout _ constraint top _ toTopOf=' @ id/bottom _ view '/
视角
android:id='@ id/dividerThree '
android:layout_width='1dp '
android:layout_height='40dp '
android:background='#ffffff '
app:layout _ constraint end _ to start of=' @ id/next year '
app:layout _ constraint start _ toEndOf=' @ id/下月'
app:layout _ constraint top _ toTopOf=' @ id/bottom _ view '/
文本视图
android:id='@ id/nextYear '
android:layout_width='0dp '
Android:layout _ height=' wrap _ content '
安卓:重力='中心'
android:text='下一年'
android:textColor='#ffffff '
安卓:onClick='明年'
app:layout _ constraint bottom _ to bottom of=' @ id/bottom _ view '
app:layout _ constraint end _ toEndOf=' @ id/bottom _ view '
app:layout _ constraint start _ toEndOf=' @ id/divider three '
app:layout _ constraint top _ toTopOf=' @ id/bottom _ view '/
/androidx。约束布局。小部件。约束布局
主要活动,日历的功能重写也是在和这个函数中
包com。举例。日历测试;
导入安卓克斯。app compat。app。app compat活动;
导入安卓。OS。捆绑;
导入安卓。OS。处理者;
导入安卓。查看。查看;
导入安卓。小部件。按钮;
导入安卓。小部件。textview
导入com。编码结束。流行出去。流行出去;
导入com。内克尔。日历。基准日历;
导入com。内克尔。日历。月历;
导入com。内克尔。枚举。检查模型;
导入com。内克尔。枚举。datechangebehavior
导入com。内克尔。听众。oncalendarchangedlistener
导入org。乔达。时间。当地日期;
公共类主要活动扩展AppCompatActivity {
人口外流人口外流;
查看日历视图;
TextView mYear,mMonth,去年,明年,上个月,下个月.
蒙特卡伦达尔
当前年份,当前月份
按钮意图;
@覆盖
受保护的void onCreate(Bundle saved instancestate){
超级棒。oncreate(savedInstanceState);
setContentView(r . layout。活动_主);
intent=findViewById(r . id意图);
calendarView=View.inflate(this,R.layout.calendar,null);
弹出播放=弹出播放。init(这个,日历视图);
}
公共无效意图(视图视图){
initCalendar();
popupLayout.show(PopupLayout .位置_中心);
}
public void initCalendar() {
月历=日历视图。findviewbyid(r . id。月_日历);
我的耳朵=日历视图。findviewbyid(r . id。年份);
mMonth=日历视图。findviewbyid(r . id。月);
去年=日历视图。findviewbyid(r . id。去年);
明年=日历视图。findviewbyid(r . id。明年);
上月=日历视图。findviewbyid(r . id。上个月);
下个月=日历视图。findviewbyid(r . id。下个月);
月历。setcheckmode(检查模型.SINGLE _ DEFAULT _ UNCHECKED);
monthcalendar。setoncalendarchangedlistener(new OnCalendarChangedListener(){
@覆盖
public void onCalendarChange(基准日历基准日历,int年,int月,LocalDate localDate,DateChangeBehavior DateChangeBehavior){
我的耳朵。settext(字符串。(年)的值;
mmonth。settext(字符串。(月)的值;
意图。settext(字符串。(本地日期)的值;
当前年份=年份
当前月份=月;
新处理程序()。postDelayed(new Runnable() {
@覆盖
公共无效运行(){
流行出去。dissolve();
}
},800);
}
});
}
上月公开作废(查看视图){
月历。tolastpager();
}
下个月公开作废(查看视图){
月历。tonextpager();
}
公共作废下一年(查看视图){
月历。跳转日期(当前年份1,当前月份1);
}
去年公共无效(视图视图){
月历。跳转日期(当前年份-1,当前月份,1);
}
}
开源代码库下载地址
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。