php模拟超级课程表,一个功能完善、UI简洁的仿超级课程表的课表控件 TimetableView...
TimetableView
一个非常漂亮的Android课程表控件,该控件支持的功能:
设置数据源
颜色设置,控件内置17种颜色
触感反馈,每种内置颜色都有对应的三个样式
日期显示与高亮
课表Item点击事件处理
解决课程重叠、交叉的问题,解决的效果同超级课程表
高效的切换周次
获取某天要上的课程
运行效果
1.课表页面
2.获取周一所有课程
3.功能选项
Resource
简单使用
Step 1:添加项目依赖
在build.gradle文件中添加以下代码
compile 'com.zhuangfei:TimetableView:1.0.2'
Step 2:引入TimetableView控件
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/id_timetableView"
android:orientation="vertical">
Step 3:初始化控件、设置
设置数据源时,你需要将你的课程数据转化为List对象,请参考Demo的MainActivity
mTimetableView=(TimetableView) findViewById(R.id.id_timetableView);
mTimetableView.setDataSource(subjectBeans)
.setCurTerm("大三上学期")
.setCurWeek(curWeek)
.setOnSubjectItemClickListener(this)
.showTimetableView();
//调用过showSubjectView后需要调用changWeek()
//第二个参数为true时在改变课表布局的同时也会将第一个参数设置为当前周
//第二个参数为false时只改变课表布局
mTimetableView.changeWeek(curWeek, true);
属性
先看下timetableView可以设置哪些属性
mTimetableView.setDataSource(List)
.setCurTerm(String)//设置学期
.setCurWeek(int)//设置当前周
.setMax(boolean)//是否启用最大节次(12节)
.setShowDashLayer(boolean)//是否显示虚线层,默认显示
.bindTitleView(TextView)//绑定一个TextView当数据变化时同时更新该文本
.setOnSubjectBindViewListener(OnSubjectBindViewListener)//指定一个在数据变化时更新文本的规则
.setOnSubjectItemClickListener(OnSubjectItemClickListener)//指定一个item被点击的事件处理方式
.showTimetableView();//显示视图
动态更新课表
不管删除还是添加,只需要更改数据源,最后调用notifyDataSourceChanged()来通知UI界面同步即可。
//删除课程
protected void deleteSubject() {
int pos = (int) (Math.random() * subjectBeans.size());
if (subjectBeans.size() > 0) {
subjectBeans.remove(pos);
mTimetableView.notifyDataSourceChanged();
} else {
Toast.makeText(this, "没有课程啦!", Toast.LENGTH_SHORT).show();
}
}
切换周次
切换周次的效率非常高,你可以使用以下代码切换周次:
//第二个参数为:是否强制将第一个参数设置为当前周
timetableView.changeWeek(2,true);
获取某天的课程(要求版本>=v1.0.1)
SubjectUtils是课程的工具类,调用其方法获取课程,示例如下:
//显示周一课程
protected void showTodaySubjects() {
//0表示周一,依次类推,6代表周日
List beans = SubjectUtils.getTodaySubjects(subjectBeans, curWeek, 0);
String subjectStr=showSubjects(beans);
Toast.makeText(this, "周一有" + beans.size() + "门课要上\n\n" + subjectStr, Toast.LENGTH_SHORT).show();
}
//显示周一所有课程
protected void showTodayAllSubjects() {
List beans = SubjectUtils.getTodayAllSubjects(subjectBeans, 0);
String subjectStr=showSubjects(beans);
Toast.makeText(this, "周一共有" + beans.size() + "门课\n\n" + subjectStr, Toast.LENGTH_SHORT).show();
}
绑定TextView
当curWeek、数据源、curTerm任一发生变化,系统根据自己定义的规则对绑定的TextView进行文字同步,示例如下:
mTimetableView.setDataSource(subjectBeans)
.setCurTerm("大三上学期")
.setCurWeek(curWeek)
.bindTitleView(mTitleTextView)//这句话绑定View
.setOnSubjectBindViewListener(this)//这句话实现接口,在接口中定义规则
.setOnSubjectItemClickListener(this)
.setOnSubjectItemLongClickListener(this)
.showTimetableView();
@Override
public void onBindTitleView(TextView titleTextView, int curWeek, String curTerm, List subjectBeans) {
String text = "第" + curWeek + "周" + ",共" + subjectBeans.size() + "门课";
//填充
titleTextView.setText(text);
//同步当前周次
this.curWeek=curWeek;
}
注意的地方
1.在调用showTimetableView()后需要调用一次changeWeek(),因为我在showTimetableView()里没有处理课程重叠的问题,当课程重叠或者有交叉且该课程在本周上时,会在课程的右上方义小红点+数字的形式提示。
2.红点的出现时机:在同一时刻且在本周有课的课程数大于等于2时
3.欢迎start、watch、fork,有问题可以联系我1193600556@qq.com
php模拟超级课程表,一个功能完善、UI简洁的仿超级课程表的课表控件 TimetableView...相关推荐
- Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1)
Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1) 本文转载至深入理解Cocos2d-x 3.x:一步一步通过ClippingNode实现一个功能完善的跑马灯公 ...
- nunito字体_dcat-admin: 使用很少的代码快速构建一个功能完善的高颜值后台系统,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码。...
Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需很少的代码即可快速构建出一个功能完善的高颜值后台系统.内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的H ...
- 精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能)
精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能) 原文:精通 WPF UI Virtualization (提升 OEA 框架中 TreeGri ...
- C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...
C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件"Form1"的线程访问它 网上的代码都比较复杂,还是这个简单 见代码, 简易解决办法: 主窗体代码 usin ...
- java+tableseg,多种功能集成,带Refresh刷新的tableV,Seg分段控件
支持 IOS7+ 详见Demo TestSegmentAndRefreshTableViewDemo 多种功能集成,带Refresh刷新的tableV,Seg分段控件,加载提示toast ##使用到 ...
- android 除了webview 浏览器控件,AgentWeb是基于Android WebView一个功能完善小型浏览器库...
[技巧沙龙]AI开辟者拭魅战营-7分钟打造1个定制技能.7月22号,我们等你一路! Android 端 AgentWeb 介绍 AgentWeb是一个高度封装的 Android WebView ,简单 ...
- 一步步教你如何定制一个Android「填空题」控件(仿学习强国填空题控件)
一.写在前面 开始之前,老规矩,絮絮叨叨. 本文讲解的是如何自定义一个填空题控件,实现的方式其实有很多,最重要的是了解其中实现的思路和想法,正所谓条条大路通罗马嘛. 在Android系统中,我们最常使 ...
- DevExpress Blazor UI组件v20.2新版亮点:报表控件支持Blazor
DevExpress技术交流群3:700924826 欢迎一起进群讨论 DevExpress Universal Subscription拥有.NET开发需要的所有平台控件,包含600多个U ...
- 分享一个WM上绘制饼图、柱形图、折线图的控件类
最近工作中需要在Windows Mobile上实现统计图表绘制,如饼图.柱形图.折线图等,虽然要求的形式比较简单,但是不允许用第三方或开源的控件类库,只好自己动手写了一个简单的.初步实现了饼图.柱形图 ...
最新文章
- 20165219王彦博《基于Cortex-M4的虚拟机制作与测试》课程设计个人报告
- POJ 2723 Get Luffy Out【二分+2-sat】
- 忘记农民就是忘本-农业大健康·万祥军:不要说自己是教授
- linux shell 脚本个人规范总结
- java为什么密码比字符串更喜欢char []?
- kong使用mysql_Kong官方文档翻译:安装Kong
- OpenShift 4 - DevSecOps Workshop (11) - 通过Trigger启动Pipeline运行
- 离线语音控制并不等于本地语音识别
- 开涛spring3(4.4) - 资源 之 4.4 Resource通配符路径
- 怎样在电脑上面简单的记账,了解账户收支
- Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Ro A. In Search of an Easy Proble
- 微信小程序码生成时报data format error
- Xilinx FPGA时钟及I/O接口规划(一)
- iass、pass、saas
- 计算机毕业答辩程序无法运行,计算机专业毕业答辩程序
- 别踩白块_前端H5游戏毕设
- 网狐服务器的基本结构
- PLM系统的技术现状和发展趋势
- networkx画图(番外)——(1)自定义节点布局
- Arduino Leonardo 模拟键盘
热门文章
- 3D Cube计算引擎加速运算
- MinkowskiEngine Miscellaneous Classes杂类
- [JAVAEE] 理解“自然模板“+使用 ModelAndView 对象
- 零起点学算法07——复杂一点的表达式计算
- Android Studio 设置git 提交代码
- 2018考研英语:10篇必背的真题文章
- CSAPP(4):存储器层次结构
- encodeURI 和 encodeURIComponent
- 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
- WordPress数据库优化技巧