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...相关推荐

  1. Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1)

    Cocos2d-x 3.2:通过ClippingNode实现一个功能完善的跑马灯公告(1) 本文转载至深入理解Cocos2d-x 3.x:一步一步通过ClippingNode实现一个功能完善的跑马灯公 ...

  2. nunito字体_dcat-admin: 使用很少的代码快速构建一个功能完善的高颜值后台系统,内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的HTML代码。...

    Dcat Admin是一个基于laravel-admin二次开发而成的后台系统构建工具,只需很少的代码即可快速构建出一个功能完善的高颜值后台系统.内置丰富的后台常用组件,开箱即用,让开发者告别冗杂的H ...

  3. 精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能)

    精通 WPF UI Virtualization (提升 OEA 框架中 TreeGrid 控件的性能) 原文:精通 WPF UI Virtualization (提升 OEA 框架中 TreeGri ...

  4. C# 委托 / 跨线程访问UI / 线程间操作无效: 从不是创建控件“Form1”的线程访问它...

    C# 委托 / 跨线程访问UI /  线程间操作无效: 从不是创建控件"Form1"的线程访问它 网上的代码都比较复杂,还是这个简单 见代码, 简易解决办法: 主窗体代码 usin ...

  5. java+tableseg,多种功能集成,带Refresh刷新的tableV,Seg分段控件

    支持 IOS7+  详见Demo TestSegmentAndRefreshTableViewDemo 多种功能集成,带Refresh刷新的tableV,Seg分段控件,加载提示toast ##使用到 ...

  6. android 除了webview 浏览器控件,AgentWeb是基于Android WebView一个功能完善小型浏览器库...

    [技巧沙龙]AI开辟者拭魅战营-7分钟打造1个定制技能.7月22号,我们等你一路! Android 端 AgentWeb 介绍 AgentWeb是一个高度封装的 Android WebView ,简单 ...

  7. 一步步教你如何定制一个Android「填空题」控件(仿学习强国填空题控件)

    一.写在前面 开始之前,老规矩,絮絮叨叨. 本文讲解的是如何自定义一个填空题控件,实现的方式其实有很多,最重要的是了解其中实现的思路和想法,正所谓条条大路通罗马嘛. 在Android系统中,我们最常使 ...

  8. DevExpress Blazor UI组件v20.2新版亮点:报表控件支持Blazor

    DevExpress技术交流群3:700924826      欢迎一起进群讨论 DevExpress Universal Subscription拥有.NET开发需要的所有平台控件,包含600多个U ...

  9. 分享一个WM上绘制饼图、柱形图、折线图的控件类

    最近工作中需要在Windows Mobile上实现统计图表绘制,如饼图.柱形图.折线图等,虽然要求的形式比较简单,但是不允许用第三方或开源的控件类库,只好自己动手写了一个简单的.初步实现了饼图.柱形图 ...

最新文章

  1. 20165219王彦博《基于Cortex-M4的虚拟机制作与测试》课程设计个人报告
  2. POJ 2723 Get Luffy Out【二分+2-sat】
  3. 忘记农民就是忘本-农业大健康·万祥军:不要说自己是教授
  4. linux shell 脚本个人规范总结
  5. java为什么密码比字符串更喜欢char []?
  6. kong使用mysql_Kong官方文档翻译:安装Kong
  7. OpenShift 4 - DevSecOps Workshop (11) - 通过Trigger启动Pipeline运行
  8. 离线语音控制并不等于本地语音识别
  9. 开涛spring3(4.4) - 资源 之 4.4 Resource通配符路径
  10. 怎样在电脑上面简单的记账,了解账户收支
  11. Codeforces Round #512 (Div. 2, based on Technocup 2019 Elimination Ro A. In Search of an Easy Proble
  12. 微信小程序码生成时报data format error
  13. Xilinx FPGA时钟及I/O接口规划(一)
  14. iass、pass、saas
  15. 计算机毕业答辩程序无法运行,计算机专业毕业答辩程序
  16. 别踩白块_前端H5游戏毕设
  17. 网狐服务器的基本结构
  18. PLM系统的技术现状和发展趋势
  19. networkx画图(番外)——(1)自定义节点布局
  20. Arduino Leonardo 模拟键盘

热门文章

  1. 3D Cube计算引擎加速运算
  2. MinkowskiEngine Miscellaneous Classes杂类
  3. [JAVAEE] 理解“自然模板“+使用 ModelAndView 对象
  4. 零起点学算法07——复杂一点的表达式计算
  5. Android Studio 设置git 提交代码
  6. 2018考研英语:10篇必背的真题文章
  7. CSAPP(4):存储器层次结构
  8. encodeURI 和 encodeURIComponent
  9. 最长公共子序列(LCS)问题 Longest Common Subsequence 与最长公告字串 longest common substr...
  10. WordPress数据库优化技巧