日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

php模拟超级课程表,一个功能完善、UI简洁的仿超级课程表的课表控件 TimetableView...

發布時間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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...的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。