Android课程表控件v2.0.1用法大合集

v2.0.1文档

本文中的功能介绍、控件用法均针对v2.0.0以及v2.0.1,它并不是最新的,你可以在 ChangeLog 查看本控件的开发进展,作者联系方式[email protected]

TimetableView是一款开源的Android课程表控件。

  • 支持xml设置属性、数据源
  • 提供了默认的周次选择栏(超级课程表效果),支持自定义
  • 提供了默认的日期栏,支持自定义
  • 多项侧边栏配置项,可设置时间的显示与否,支持自定义
  • 多项课程项配置项,可拦截、可修改弧度、可设置非本周是否显示
  • 课程颜色管理:使用颜色池来管理颜色,操作灵活
  • 高效灵活:切换周次高效率、一个样式文件实现了多种课程项样式效果
  • 可替换滚动布局:不将该控件绑死在固有的ScrollView中
  • 无界面操作:你可以使用工具类对课程进行模拟分配颜色、获取有课的课程等

11

准备数据源

在开始使用控件之前,你需要准备好数据源,数据可以从网上获取或者使用本地数据,为了方便演示,使用本地的JSON字符串,然后再将其解析为需要的格式

基础功能

本节你将掌握如何使用本控件搭建自己的课表界面。这里使用的版本为2.0.1

添加依赖

Gradle

compile 'com.zhuangfei:TimetableView:2.0.1'

Maven

<dependency>
  <groupId>com.zhuangfei</groupId>
  <artifactId>TimetableView</artifactId>
  <version>2.0.1</version>
  <type>pom</type>
</dependency>

添加控件

该控件包含的基础组件有日期栏、侧边栏、课表视图,在布局文件中加入如下代码后会包含这三个基础组件

    <com.zhuangfei.timetable.TimetableView
        android:id="@+id/id_timetableView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.zhuangfei.timetable.TimetableView>

配置属性

使用如下方式获取到控件

   TimetableView mTimetableView = findViewById(R.id.id_timetableView);    

属性的设置分为两类:与课程项构建有关的、与全局有关的,前者的配置在ScheduleManager对象中,后者的配置在TimetableView中,所有配置信息需要在showView()调用前完成,否则无效

以下代码用来监听课程项点击事件:

mTimetableView.getScheduleManager()
                .setOnItemClickListener(new ISchedule.OnItemClickListener() {
                    @Override
                    public void onItemClick(View v, List<Schedule> scheduleList) {
                        display(scheduleList);
                    }
                });       

然后设置它的一些全局属性,最后调用showView()用来创建和显示课表视图,代码如下:

mTimetableView.setSource(mySubjects)
                .setCurWeek(1)
                .setCurTerm("大三下学期")
                .showView();    

至此,课表已经可以显示在视图上了,你可能会问:设置数据源时mySubjects是什么?不要着急,继续看…

数据源设置

数据源的设置方式有两种,以下分别来介绍:

方法1:使用指定的格式List<Schedule>,Schedule是控件提供的课程实体类,你可以将自己的数据封装为指定格式,然后进行如下配置即可

 mTimetableView.setData(scheduleList)
                .setCurWeek(1)
                .setCurTerm("大三下学期")
                .showView();

方法2:方法1在很多场景下都满足不了需求,往往需要定义自己的课程实体类,你可以跟随以下几个步骤来使用它

  • 创建自定义的实体类并实现ScheduleEnable接口

public class MySubject implements ScheduleEnable {
   
  //省略属性、setter、getter、构造函数

   @Override
  public Schedule getSchedule() {
      Schedule schedule=new Schedule();
      schedule.setDay(getDay());
      schedule.setName(getName());
      schedule.setRoom(getRoom());
      schedule.setStart(getStart());
      schedule.setStep(getStep());
      schedule.setTeacher(getTeacher());
      schedule.setWeekList(getWeekList());
      schedule.setColorRandom(2);
      return schedule;
   }
}
  • 使用setSource()设置
//模拟获取课程数据:自定义格式
List<MySubject> mySubjects = SubjectRepertory.loadDefaultSubjects();

//设置数据源并显示
mTimetableView.setSource(mySubjects)
                .setCurWeek(1)
                .setCurTerm("大三下学期")
                .showView();    

可见,上述那个例子使用的是方法2,我个人也建议使用方法2:比较灵活,可根据具体情况选择。简单几步,课表界面就可以显示出来了,是不是有点小激动呀。

删除课程

/**
     * 删除课程
     * 内部使用集合维护课程数据,操作集合的方法来操作它即可
     * 最后更新一下视图(全局更新)
     */
    protected void deleteSubject() {
        int size = mTimetableView.getDataSource().size();
        int pos = (int) (Math.random() * size);
        if (size > 0) {
            mTimetableView.getDataSource().remove(pos);
            mTimetableView.updateView();
        }
    }

添加课程

    /**
     * 添加课程
     * 内部使用集合维护课程数据,操作集合的方法来操作它即可
     * 最后更新一下视图(全局更新)
     */
    protected void addSubject() {
        int size = mTimetableView.getDataSource().size();
        if (size > 0) {
            Schedule schedule = mTimetableView.getDataSource().get(0);
            mTimetableView.getDataSource().add(schedule);
            mTimetableView.updateView();
        }
    }

周次选择栏

周次选择栏WeekView是控件实现的一个默认的周次选择控件,你可以使用它快速的拥有周次选择功能,TimetableView是没有周次选择功能的,所以需要两者配合使用。
本节你将掌握使用zfman/TimetableView添加一个周次选择栏

默认的周次选择栏

1.添加控件

在布局文件中放一个TimetableView,然后在TimetableView的上边放一个WeekView

    <com.zhuangfei.timetable.view.WeekView
        android:id="@+id/id_weekview"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

    <com.zhuangfei.timetable.TimetableView
        android:id="@+id/id_timetableView"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </com.zhuangfei.timetable.TimetableView>

2.获取控件

TimetableView mTimetableView;
WeekView weekView;
//获取控件
mTimetableView = findViewById(R.id.id_timetableView);
weekView=findViewById(R.id.id_weekview);

3.设置WeekView

        //设置周次选择属性
        weekView.setSource(mySubjects)
                .setCurWeek(1)
                .setOnWeekItemClickedListener(new IWeekView.OnWeekItemClickedListener() {
                    @Override
                    public void onWeekClicked(int curWeek) {
                        mTimetableView.changeWeekOnly(curWeek);
                    }
                })
                .setOnWeekLeftClickedListener(new IWeekView.OnWeekLeftClickedListener() {
                    @Override
                    public void onWeekLeftClicked() {
                        Log.d(TAG, "onWeekLeftClicked: ");
                        onWeekLeftLayoutClicked();
                    }
                })
                .showView();

4.设置TimetableView

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值