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...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 求一首歌,只记得歌词!天涯大人们,求助!
- 下一篇: php xml获取标签属性,php获取x