当前位置:   article > 正文

Android课程表的设计开发

android课程表的设计开发
导语

实现了教务系统中课程的导入,分类显示课程。学期的修改,增加,修改。课程按照周的显示。课程修改上课星期和上课周。上课课程的自动归类。

一、主要功能界面

DrawingDrawing DrawingDrawing Drawing

开发过程

一开始因为毕设有关课程表的要求不明,主要就是利用jsoup拉取学校教务管理系统的课程数据进行课程表界面的填充显示,并不能课程的个性化调整。 
后来重新调整了需求,参考了超级课程表的功能。重新设计了实体类,利用bmob移动端云作为爬取到的数据的数据服务器进行了重新的开发。

主要代码

1、课程实体类
  1. package com.mangues.coursemanagement.bean;
  2. import java.io.Serializable;
  3. import java.util.ArrayList;
  4. import java.util.regex.Matcher;
  5. import java.util.regex.Pattern;
  6. import cn.bmob.v3.BmobObject;
  7. public class CourseBean extends BmobObject implements Serializable {
  8. public static final String TAG = "CourseBean";
  9. private String studentId;
  10. private String dataYear;
  11. private String dataTerm;
  12. private String courseName = ""; //课程名
  13. private String courseRoom = ""; //教室
  14. private String courseTeacher = ""; //老师
  15. //private String courseWeekNumber = "0";
  16. private ArrayList<Integer> courseWeekNumber = new ArrayList<>(); //周数
  17. private int courseWeek = 0; //星期几上课
  18. private int courseLow = 0; //第几排
  19. private int courseSection = 0; //延续几节课
  20. //private String courseSection = "12"; //第几节上课1,2,12(2节课)
  21. //private String courseIn = "3"; //单双周 1(单),2(双),3(全)
  22. public CourseBean() {
  23. super();
  24. }
  25. public void setCourseBase(String studentId, String dataYear, String dataTerm) {
  26. this.studentId = studentId;
  27. this.dataYear = dataYear;
  28. this.dataTerm = dataTerm;
  29. }
  30. public CourseBean(String courseName, String courseRoom, String courseTeacher, ArrayList<Integer> courseWeekNumber, int courseWeek, int courseLow, int courseSection) {
  31. this.courseName = courseName;
  32. this.courseRoom = courseRoom;
  33. this.courseTeacher = courseTeacher;
  34. this.courseWeekNumber = courseWeekNumber;
  35. this.courseWeek = courseWeek;
  36. this.courseLow = courseLow;
  37. this.courseSection = courseSection;
  38. }
  39. /**
  40. * str 数据到bean
  41. * @Name: stringToBean
  42. * @param str
  43. * @return
  44. * @Time: 2015-12-21 上午11:00:57
  45. * @Return: CourseBean
  46. */
  47. public static CourseBean stringToBean(String str) {
  48. return toBean(str);
  49. }
  50. //辅助
  51. private static CourseBean toBean(String courseDatas){
  52. CourseBean bean = null;
  53. String[] courseData = courseDatas.split("◇");
  54. if(courseData.length>3){ //有数据
  55. bean = new CourseBean();
  56. String courseName = courseData[0];
  57. String courseRoom = courseData[2];
  58. //获取上课周数
  59. findWeekNumberFromStr(courseData[1],bean);
  60. bean.setCourseName(courseName);
  61. bean.setCourseRoom(courseRoom);
  62. findCourseInFromStr(courseData[4],bean);
  63. }
  64. return bean;
  65. }
  66. /**
  67. * 找出上课周数,老师名字
  68. * @Name: findFromStr
  69. * @return
  70. * @Time: 2015-12-21 上午11:22:30
  71. * @Return: String
  72. */
  73. public static void findWeekNumberFromStr(String courseData,CourseBean bean){
  74. Pattern pattern = Pattern.compile("(\\w*)\\((\\d+)-(\\d+)\\)");
  75. Matcher matcher = pattern.matcher(courseData);
  76. if(matcher.find()){
  77. String teacher = matcher.group(1);
  78. bean.setCourseTeacher(teacher);
  79. String weekNumberstart = matcher.group(2);
  80. String weekNumberfinish = matcher.group(3);
  81. Integer weekNumberstartInt = Integer.parseInt(weekNumberstart);
  82. Integer weekNumberfinishInt = Integer.parseInt(weekNumberfinish);
  83. for (int i = weekNumberstartInt;i<=weekNumberfinishInt;i++){
  84. bean.getCourseWeekNumber().add(i);
  85. }
  86. }
  87. }
  88. /**
  89. * 找出 上课是不是单双周,几节课
  90. * @Name: findCourseInFromStr
  91. * @param courseData
  92. * @return
  93. * @Time: 2015-12-21 下午1:29:05
  94. * @Return: String
  95. */
  96. public static void findCourseInFromStr(String courseData,CourseBean bean){
  97. Pattern pattern = Pattern.compile("(\\w*)\\{(\\d*)节\\}");
  98. Matcher matcher = pattern.matcher(courseData);
  99. if(matcher.find()){
  100. String str = matcher.group(1);
  101. ArrayList<Integer> list = bean.getCourseWeekNumber();
  102. switch (str) {
  103. case "单周":
  104. for (int i = 0;i< list.size();i++){
  105. Integer weekNumber = list.get(i);
  106. if (weekNumber%2==0){ //移除偶数
  107. bean.getCourseWeekNumber().remove(i);
  108. }
  109. }
  110. break;
  111. case "双周":
  112. for (int i = 0;i< list.size();i++){
  113. Integer weekNumber = list.get(i);
  114. if (weekNumber%2!=0){ //移除奇数
  115. bean.getCourseWeekNumber().remove(i);
  116. }
  117. }
  118. break;
  119. default:
  120. break;
  121. }
  122. String str2 = matcher.group(2);
  123. String[] args = str2.split("");
  124. if (args.length==3){
  125. Integer integer = Integer.parseInt(args[1]);
  126. Integer integer2 = Integer.parseInt(args[2]);
  127. bean.setCourseLow(integer);
  128. bean.setCourseSection(integer2-integer+1);
  129. }else if (args.length==4){
  130. Integer integer = Integer.parseInt(args[1]);
  131. Integer integer2 = Integer.parseInt(args[2]+args[3]);
  132. bean.setCourseLow(integer);
  133. bean.setCourseSection(integer2-integer+1);
  134. }else if (args.length==5){
  135. Integer integer = Integer.parseInt(args[1]+args[2]);
  136. Integer integer2 = Integer.parseInt(args[3]+args[4]);
  137. bean.setCourseLow(integer);
  138. bean.setCourseSection(integer2-integer+1);
  139. }else if (args.length==2){
  140. Integer integer = Integer.parseInt(args[1]);
  141. bean.setCourseLow(integer);
  142. bean.setCourseSection(1);
  143. }
  144. }
  145. }
  146. public String getCourseName() {
  147. return courseName;
  148. }
  149. public void setCourseName(String courseName) {
  150. this.courseName = courseName;
  151. }
  152. public String getCourseRoom() {
  153. return courseRoom;
  154. }
  155. public void setCourseRoom(String courseRoom) {
  156. this.courseRoom = courseRoom;
  157. }
  158. public String getCourseTeacher() {
  159. return courseTeacher;
  160. }
  161. public void setCourseTeacher(String courseTeacher) {
  162. this.courseTeacher = courseTeacher;
  163. }
  164. public ArrayList<Integer> getCourseWeekNumber() {
  165. return courseWeekNumber;
  166. }
  167. public void setCourseWeekNumber(ArrayList<Integer> courseWeekNumber) {
  168. this.courseWeekNumber = courseWeekNumber;
  169. }
  170. public int getCourseWeek() {
  171. return courseWeek;
  172. }
  173. public void setCourseWeek(int courseWeek) {
  174. this.courseWeek = courseWeek;
  175. }
  176. public int getCourseLow() {
  177. return courseLow;
  178. }
  179. public void setCourseLow(int courseLow) {
  180. this.courseLow = courseLow;
  181. }
  182. public int getCourseSection() {
  183. return courseSection;
  184. }
  185. public void setCourseSection(int courseSection) {
  186. this.courseSection = courseSection;
  187. }
  188. public String getStudentId() {
  189. return studentId;
  190. }
  191. public void setStudentId(String studentId) {
  192. this.studentId = studentId;
  193. }
  194. public String getDataYear() {
  195. return dataYear;
  196. }
  197. public void setDataYear(String dataYear) {
  198. this.dataYear = dataYear;
  199. }
  200. public String getDataTerm() {
  201. return dataTerm;
  202. }
  203. public void setDataTerm(String dataTerm) {
  204. this.dataTerm = dataTerm;
  205. }
  206. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 123
  • 124
  • 125
  • 126
  • 127
  • 128
  • 129
  • 130
  • 131
  • 132
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • 144
  • 145
  • 146
  • 147
  • 148
  • 149
  • 150
  • 151
  • 152
  • 153
  • 154
  • 155
  • 156
  • 157
  • 158
  • 159
  • 160
  • 161
  • 162
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • 174
  • 175
  • 176
  • 177
  • 178
  • 179
  • 180
  • 181
  • 182
  • 183
  • 184
  • 185
  • 186
  • 187
  • 188
  • 189
  • 190
  • 191
  • 192
  • 193
  • 194
  • 195
  • 196
  • 197
  • 198
  • 199
  • 200
  • 201
  • 202
  • 203
  • 204
  • 205
  • 206
  • 207
  • 208
  • 209
  • 210
  • 211
  • 212
  • 213
  • 214
  • 215
  • 216
  • 217
  • 218
  • 219
  • 220
  • 221
  • 222
  • 223
  • 224
  • 225
  • 226
  • 227
  • 228
  • 229
  • 230
  • 231
  • 232
  • 233
  • 234
  • 235
  • 236
  • 237
  • 238
  • 239
  • 240
  • 241
  • 242
  • 243
  • 244
  • 245
  • 246
  • 247
  • 248
  • 249
2、课程归类处理
  1. //按天查询数据
  2. private void getDayDate(List<CourseBean> list){
  3. boolean boo = SaveUtil.getSharedPreferencesSwitch(mContext);
  4. ArrayList<CourseBean> integerA = new ArrayList<>();
  5. if (boo){
  6. if (weekNum!=-1){
  7. for (int l=0;l<list.size();l++){ //去除
  8. ArrayList<Integer> integerArrayList = list.get(l).getCourseWeekNumber();
  9. if (!integerArrayList.contains(weekNum)){ //不包含,就是不是本周,去除
  10. integerA.add(list.get(l));
  11. }
  12. }
  13. list.removeAll(integerA);
  14. }
  15. }
  16. List<CourseBean> list1 = null;
  17. Map<Integer,List<CourseBean>> map = new HashMap<>();
  18. for (CourseBean be :list) {
  19. Integer weekNum = be.getCourseWeek();
  20. if (map.containsKey(weekNum)){ //有数据
  21. list1 = map.get(weekNum);
  22. }else {
  23. list1 = new ArrayList<>();
  24. map.put(weekNum,list1);
  25. }
  26. list1.add(be);
  27. }
  28. ArrayList<CourseBeanMap> ls = new ArrayList<>();
  29. //按星期几处理
  30. for (Map.Entry<Integer,List<CourseBean>> entry : map.entrySet()) {
  31. List<CourseBeanMap> mapw = handleRepeat(entry.getValue(),entry.getKey());
  32. ls.addAll(mapw);
  33. }
  34. //本地存储存储使用
  35. TimeTableBmob bmob = new TimeTableBmob();
  36. bmob.setStudentId(CourseApplication.getInstance().getUserInfo().getStudentId());
  37. bmob.setCourseList(ls);
  38. bmob.setTerm(dataTerm);
  39. bmob.setYear(dataYear);
  40. CourseApplication.getInstance().setTimeTableBmob(bmob);
  41. dataBack.onDataBack(ls);
  42. }
  43. //处理重复
  44. private List<CourseBeanMap> handleRepeat(List<CourseBean> list,Integer weekNum){
  45. Collections.sort(list,new Comparator<CourseBean>(){
  46. public int compare(CourseBean arg0, CourseBean arg1) {
  47. Integer year1 = arg0.getCourseLow();
  48. Integer year2 = arg1.getCourseLow();
  49. return year1.compareTo(year2);
  50. }
  51. });
  52. List<CourseBeanMap> listKey = new ArrayList<>();
  53. List<String> liststr = new ArrayList<>();
  54. int size = list.size();
  55. for (int h=0;h<list.size();h++){
  56. CourseBean bean = list.get(h);
  57. Integer low = bean.getCourseLow();
  58. Integer sesson = bean.getCourseSection();
  59. Boolean isAdd = false;
  60. for (int kk=0;kk<listKey.size();kk++){
  61. String key = liststr.get(kk);
  62. String[] keys = key.split("-");//
  63. Integer low1 =Integer.parseInt(keys[0]);//3
  64. Integer sesson1 =Integer.parseInt(keys[1]);//2
  65. if ((low1+sesson1-1)>=low){ //包含在内
  66. isAdd = true;
  67. CourseBeanMap cousermap = listKey.get(kk);
  68. cousermap.setCourseLow(low1);
  69. cousermap.setCourseWeek(weekNum);
  70. cousermap.setCourseSection(sesson+low-low1);
  71. liststr.set(kk,low1+"-"+(sesson+low-low1));//修改key值
  72. cousermap.add(bean);
  73. }
  74. }
  75. if (isAdd==false){
  76. CourseBeanMap cousermap = new CourseBeanMap();
  77. cousermap.setCourseLow(low);
  78. cousermap.setCourseWeek(weekNum);
  79. cousermap.setCourseSection(sesson);
  80. cousermap.add(bean);
  81. listKey.add(cousermap);
  82. liststr.add(low+"-"+sesson);
  83. }
  84. }
  85. return listKey;
  86. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62
  • 63
  • 64
  • 65
  • 66
  • 67
  • 68
  • 69
  • 70
  • 71
  • 72
  • 73
  • 74
  • 75
  • 76
  • 77
  • 78
  • 79
  • 80
  • 81
  • 82
  • 83
  • 84
  • 85
  • 86
  • 87
  • 88
  • 89
  • 90
  • 91
  • 92
  • 93
  • 94
  • 95
  • 96
  • 97
  • 98
  • 99
  • 100
  • 101
  • 102
  • 103
  • 104
  • 105
  • 106
  • 107
  • 108
  • 109
  • 110
  • 111
  • 112
  • 113
  • 114
  • 115
  • 116
  • 117
  • 118
  • 119
  • 120
  • 121
  • 122
3.课程表界面

利用了网上找到的一段代码进行部分修改完成

  1. //初始化课程表界面
  2. private void initTable() {
  3. // 获得列头的控件
  4. empty = (TextView) this.findViewById(R.id.test_empty);
  5. monColum = (TextView) this.findViewById(R.id.test_monday_course);
  6. tueColum = (TextView) this.findViewById(R.id.test_tuesday_course);
  7. wedColum = (TextView) this.findViewById(R.id.test_wednesday_course);
  8. thrusColum = (TextView) this.findViewById(R.id.test_thursday_course);
  9. friColum = (TextView) this.findViewById(R.id.test_friday_course);
  10. satColum = (TextView) this.findViewById(R.id.test_saturday_course);
  11. sunColum = (TextView) this.findViewById(R.id.test_sunday_course);
  12. course_table_layout = (RelativeLayout) this
  13. .findViewById(R.id.test_course_rl);
  14. course_table_layout.removeAllViews(); //清楚页面数据
  15. DisplayMetrics dm = new DisplayMetrics();
  16. getWindowManager().getDefaultDisplay().getMetrics(dm);
  17. // 屏幕宽度
  18. int width = dm.widthPixels;
  19. // 平均宽度
  20. int aveWidth = width / 8;
  21. // 第一个空白格子设置为25宽
  22. empty.setWidth(aveWidth * 3 / 4);
  23. monColum.setWidth(aveWidth * 33 / 32 + 1);
  24. tueColum.setWidth(aveWidth * 33 / 32 + 1);
  25. wedColum.setWidth(aveWidth * 33 / 32 + 1);
  26. thrusColum.setWidth(aveWidth * 33 / 32 + 1);
  27. friColum.setWidth(aveWidth * 33 / 32 + 1);
  28. satColum.setWidth(aveWidth * 33 / 32 + 1);
  29. sunColum.setWidth(aveWidth * 33 / 32 + 1);
  30. this.screenWidth = width;
  31. this.aveWidth = aveWidth;
  32. int height = dm.heightPixels;
  33. gridHeight = height / 12;
  34. // 设置课表界面
  35. // 动态生成12 * maxCourseNum个textview
  36. for (int i = 1; i <= 12; i++) {
  37. for (int j = 1; j <= 8; j++) {
  38. TextView tx = new TextView(mContext);
  39. tx.setId((i - 1) * 8 + j);
  40. // 除了最后一列,都使用course_text_view_bg背景(最后一列没有右边框)
  41. if (j < 8)
  42. tx.setBackgroundDrawable(mContext.getResources()
  43. .getDrawable(R.drawable.course_text_view_bg));
  44. else
  45. tx.setBackgroundDrawable(mContext.getResources()
  46. .getDrawable(R.drawable.course_table_last_colum));
  47. // 相对布局参数
  48. RelativeLayout.LayoutParams rp = new RelativeLayout.LayoutParams(
  49. aveWidth * 33 / 32 + 1, gridHeight);
  50. // 文字对齐方式
  51. tx.setGravity(Gravity.CENTER);
  52. // 字体样式
  53. tx.setTextAppearance(mContext, R.style.courseTableText);
  54. // 如果是第一列,需要设置课的序号(1 到 12)
  55. if (j == 1) {
  56. tx.setAlpha(0.3f);
  57. tx.setText(String.valueOf(i));
  58. rp.width = aveWidth * 3 / 4;
  59. // 设置他们的相对位置
  60. if (i == 1)
  61. rp.addRule(RelativeLayout.BELOW, empty.getId());
  62. else
  63. rp.addRule(RelativeLayout.BELOW, (i - 1) * 8);
  64. } else {
  65. tx.setAlpha(0f);
  66. rp.addRule(RelativeLayout.RIGHT_OF, (i - 1) * 8 + j - 1);
  67. rp.addRule(RelativeLayout.ALIGN_TOP, (i - 1) * 8 + j - 1);
  68. tx.setText("");
  69. }
  70. tx.setLayoutParams(rp);
  71. course_table_layout.addView(tx);
  72. }
  73. }
  74. }
  75. //数据填充
  76. private void setCourseData(final CourseBeanMap map, final int index) {
  77. final CourseBean bean = map.returnfirstTrue(weekNum);
  78. // 添加课程信息
  79. TextView courseInfo = new TextView(mContext);
  80. courseInfo.setText(bean.getCourseName() + "@" + bean.getCourseRoom());
  81. // 该textview的高度根据其节数的跨度来设置
  82. RelativeLayout.LayoutParams rlp = new RelativeLayout.LayoutParams(
  83. aveWidth * 31 / 32, (gridHeight - 5) * map.getCourseSection());
  84. // textview的位置由课程开始节数和上课的时间(day of week)确定
  85. rlp.topMargin = 5 + (map.getCourseLow() - 1) * gridHeight;
  86. rlp.leftMargin = 1;
  87. // 偏移由这节课是星期几决定
  88. rlp.addRule(RelativeLayout.RIGHT_OF, map.getCourseWeek());
  89. // 字体剧中
  90. courseInfo.setGravity(Gravity.CENTER);
  91. // 设置一种背景
  92. final int back;
  93. final int huiback;
  94. if (map.isDoubleBean()) {// 有单双周
  95. back = ColorDrawable.getCourseBgMulti(map.getCourseLow(),
  96. map.getCourseWeek());
  97. huiback = ColorDrawable.grayColorMulti;
  98. } else {
  99. back = ColorDrawable.getCourseBg(map.getCourseLow(),
  100. map.getCourseWeek());
  101. huiback = ColorDrawable.grayColor;
  102. }
  103. if (map.returntTrue(weekNum)){
  104. courseInfo.setBackgroundResource(back);
  105. }else {
  106. courseInfo.setBackgroundResource(huiback);
  107. }
  108. courseInfo.setTextSize(12);
  109. courseInfo.setLayoutParams(rlp);
  110. courseInfo.setTextColor(Color.WHITE);
  111. // 设置不透明度
  112. courseInfo.getBackground().setAlpha(222);
  113. final int upperCourseIndex = 0;
  114. // 设置监听事件
  115. courseInfo.setOnClickListener(new View.OnClickListener() {
  116. @Override
  117. public void onClick(View arg0) {
  118. if (map.isDoubleBean()) {// 大于双数
  119. // 如果有多个课程,则设置点击弹出gallery 3d 对话框
  120. // LayoutInflater layoutInflater =
  121. // (LayoutInflater)mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
  122. View galleryView = layoutInflater.inflate(
  123. R.layout.course_info_gallery_layout, null);
  124. final Dialog coursePopupDialog = new AlertDialog.Builder(
  125. mContext).create();
  126. coursePopupDialog.setCanceledOnTouchOutside(true);
  127. coursePopupDialog.setCancelable(true);
  128. coursePopupDialog.show();
  129. WindowManager.LayoutParams params = coursePopupDialog
  130. .getWindow().getAttributes();
  131. params.width = WindowManager.LayoutParams.FILL_PARENT;
  132. coursePopupDialog.getWindow().setAttributes(params);
  133. DisplayMetrics dm = new DisplayMetrics();
  134. getWindowManager().getDefaultDisplay()
  135. .getMetrics(dm);
  136. // 屏幕宽度
  137. int width = dm.widthPixels;
  138. CourseInfoAdapter adapter = new CourseInfoAdapter(mContext,
  139. map, width, back,weekNum);
  140. CourseInfoGallery gallery = (CourseInfoGallery) galleryView
  141. .findViewById(R.id.course_info_gallery);
  142. gallery.setSpacing(10);
  143. gallery.setAdapter(adapter);
  144. gallery.setSelection(upperCourseIndex);
  145. gallery.setOnItemClickListener(new AdapterView.OnItemClickListener() {
  146. @Override
  147. public void onItemClick(AdapterView<?> arg0, View arg1,
  148. int arg2, long arg3) {
  149. CourseBean bean = map.get(arg2);
  150. Intent intent = new Intent(mContext,CourseInfoActivity.class);
  151. Bundle mBundle = new Bundle();
  152. mBundle.putSerializable(CourseBean.TAG, bean);
  153. mBundle.putInt("index", index);
  154. mBundle.putInt("courseBeanIndex", arg2);
  155. intent.putExtras(mBundle);
  156. startActivity(intent);
  157. coursePopupDialog.cancel();
  158. }
  159. });
  160. coursePopupDialog.setContentView(galleryView);
  161. }else { //没有单双周
  162. Intent intent = new Intent(mContext,CourseInfoActivity.class);
  163. Bundle mBundle = new Bundle();
  164. mBundle.putInt("index", index);
  165. mBundle.putInt("courseBeanIndex", 0);
  166. mBundle.putSerializable(CourseBean.TAG, bean);
  167. intent.putExtras(mBundle);
  168. startActivity(intent);
  169. }
  170. }
  171. });
  172. course_table_layout.addView(courseInfo);
  173. }
一个DEMO下载地址:http://download.csdn.net/download/qq_24531461/9831957另一个DEMO下载地址:http://download.csdn.net/download/qq_24531461/9832004
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/334547
推荐阅读
相关标签
  

闽ICP备14008679号