Android日历方式显示日期选择组件.docx
- 文档编号:15535318
- 上传时间:2023-07-05
- 格式:DOCX
- 页数:18
- 大小:20.47KB
Android日历方式显示日期选择组件.docx
《Android日历方式显示日期选择组件.docx》由会员分享,可在线阅读,更多相关《Android日历方式显示日期选择组件.docx(18页珍藏版)》请在冰点文库上搜索。
Android日历方式显示日期选择组件
Android日历方式显示的日期选择组件
此Widget组件只包含五个类文件:
• DateWidget
• DateWidgetDayCell
• DateWidgetDayHeader
• DayStyle
• SymbolButton
*红色为启动的activity
DateWidget.java:
Java代码
1. packagecom.iaiai;
2.
3. import;
4. import;
5. import;
6.
7. import;
8. import;
9. import;
10. import;
11. import;
12. import;
13. import;
14. import;
15.
37. publicclassDateWidgetextendsActivity{
38. privateArrayList
39. //privateSimpleDateFormatdateMonth=newSimpleDateFormat("MMMMyyyy");
40. privateCalendarcalStartDate=Calendar.getInstance();
41. privateCalendarcalToday=Calendar.getInstance();
42. privateCalendarcalCalendar=Calendar.getInstance();
43. privateCalendarcalSelected=Calendar.getInstance();
44. LinearLayoutlayContent=null;
45. ButtonbtnPrev=null;
46. ButtonbtnToday=null;
47. ButtonbtnNext=null;
48. privateintiFirstDayOfWeek=Calendar.MONDAY;
49. privateintiMonthViewCurrentMonth=0;
50. privateintiMonthViewCurrentYear=0;
51. publicstaticfinalintSELECT_DATE_REQUEST=111;
52. privatestaticfinalintiDayCellSize=38;
53. privatestaticfinalintiDayHeaderHeight=24;
54. privatestaticfinalintiTotalWidth=(iDayCellSize*7);
55. privateTextViewtv;
56. privateintmYear;
57. privateintmMonth;
58. privateintmDay;
59.
60. @Override
61. publicvoidonCreate(Bundleicicle){
62. super.onCreate(icicle);
63. iFirstDayOfWeek=Calendar.MONDAY;
64. mYear=calSelected.get(Calendar.YEAR);
65. mMonth=calSelected.get(Calendar.MONTH);
66. mDay=calSelected.get(Calendar.DAY_OF_MONTH);
67. setContentView(generateContentView());
68. calStartDate=getCalendarStartDate();
69. DateWidgetDayCelldaySelected=updateCalendar();
70. updateControlsState();
71. if(daySelected!
=null)
72. daySelected.requestFocus();
73. }
74.
75. @Override
76. publicvoidonStart(){
77. super.onStart();
78.
79. }
80.
81. privateLinearLayoutcreateLayout(intiOrientation){
82. LinearLayoutlay=newLinearLayout(this);
83. lay.setLayoutParams(newLayoutParams(
84. ,
85. ;
86. lay.setOrientation(iOrientation);
87. returnlay;
88. }
89.
90. privateButtoncreateButton(StringsText,intiWidth,intiHeight){
91. Buttonbtn=newButton(this);
92. btn.setText(sText);
93. btn.setLayoutParams(newLayoutParams(iWidth,iHeight));
94. returnbtn;
95. }
96.
97. privatevoidgenerateTopButtons(LinearLayoutlayTopControls){
98. finalintiHorPadding=24;
99. finalintiSmallButtonWidth=60;
100. btnToday=createButton("",iTotalWidth-iSmallButtonWidth
101. -iSmallButtonWidth,
102. ;
103. btnToday.setPadding(iHorPadding,btnToday.getPaddingTop(),iHorPadding,
104. btnToday.getPaddingBottom());
105. btnToday.setBackgroundResource(;
106.
107. SymbolButtonbtnPrev=newSymbolButton(this,
108. ;
109. btnPrev.setLayoutParams(newLayoutParams(iSmallButtonWidth,
110. ;
111. btnPrev.setBackgroundResource(;
112.
113. SymbolButtonbtnNext=newSymbolButton(this,
114. ;
115. btnNext.setLayoutParams(newLayoutParams(iSmallButtonWidth,
116. ;
117. btnNext.setBackgroundResource(;
118.
119. //setevents
120. btnPrev.setOnClickListener(newButton.OnClickListener(){
121. publicvoidonClick(Viewarg0){
122. setPrevViewItem();
123. }
124. });
125. btnToday.setOnClickListener(newButton.OnClickListener(){
126. publicvoidonClick(Viewarg0){
127.
128. setTodayViewItem();
129. Strings=calToday.get(Calendar.YEAR)+"/"
130. +(calToday.get(Calendar.MONTH)+1);
131. btnToday.setText(s);
132. }
133. });
134. btnNext.setOnClickListener(newButton.OnClickListener(){
135. publicvoidonClick(Viewarg0){
136. setNextViewItem();
137. }
138. });
139.
140. layTopControls.setGravity(Gravity.CENTER_HORIZONTAL);
141. layTopControls.addView(btnPrev);
142. layTopControls.addView(btnToday);
143. layTopControls.addView(btnNext);
144. }
145.
146. privateViewgenerateContentView(){
147. LinearLayoutlayMain=createLayout(LinearLayout.VERTICAL);
148. layMain.setPadding(8,8,8,8);
149. LinearLayoutlayTopControls=createLayout(LinearLayout.HORIZONTAL);
150.
151. layContent=createLayout(LinearLayout.VERTICAL);
152. layContent.setPadding(20,0,20,0);
153. generateTopButtons(layTopControls);
154. generateCalendar(layContent);
155. layMain.addView(layTopControls);
156. layMain.addView(layContent);
157.
158. tv=newTextView(this);
159. layMain.addView(tv);
160. returnlayMain;
161. }
162.
163. privateViewgenerateCalendarRow(){
164. LinearLayoutlayRow=createLayout(LinearLayout.HORIZONTAL);
165. for(intiDay=0;iDay<7;iDay++){
166. DateWidgetDayCelldayCell=newDateWidgetDayCell(this,
167. iDayCellSize,iDayCellSize);
168. dayCell.setItemClick(mOnDayCellClick);
169. days.add(dayCell);
170. layRow.addView(dayCell);
171. }
172. returnlayRow;
173. }
174.
175. privateViewgenerateCalendarHeader(){
176. LinearLayoutlayRow=createLayout(LinearLayout.HORIZONTAL);
177. for(intiDay=0;iDay<7;iDay++){
178. DateWidgetDayHeaderday=newDateWidgetDayHeader(this,
179. iDayCellSize,iDayHeaderHeight);
180. finalintiWeekDay=DayStyle.getWeekDay(iDay,iFirstDayOfWeek);
181. day.setData(iWeekDay);
182. layRow.addView(day);
183. }
184. returnlayRow;
185. }
186.
187. privatevoidgenerateCalendar(LinearLayoutlayContent){
188. layContent.addView(generateCalendarHeader());
189. days.clear();
190. for(intiRow=0;iRow<6;iRow++){
191. layContent.addView(generateCalendarRow());
192. }
193. }
194.
195. privateCalendargetCalendarStartDate(){
196. calToday.setTimeInMillis(System.currentTimeMillis());
197. calToday.setFirstDayOfWeek(iFirstDayOfWeek);
198.
199. if(calSelected.getTimeInMillis()==0){
200. calStartDate.setTimeInMillis(System.currentTimeMillis());
201. calStartDate.setFirstDayOfWeek(iFirstDayOfWeek);
202. }else{
203. calStartDate.setTimeInMillis(calSelected.getTimeInMillis());
204. calStartDate.setFirstDayOfWeek(iFirstDayOfWeek);
205. }
206.
207. UpdateStartDateForMonth();
208.
209. returncalStartDate;
210. }
211.
212. privateDateWidgetDayCellupdateCalendar(){
213. DateWidgetDayCelldaySelected=null;
214. booleanbSelected=false;
215. finalbooleanbIsSelection=(calSelected.getTimeInMillis()!
=0);
216. finalintiSelectedYear=calSelected.get(Calendar.YEAR);
217. finalintiSelectedMonth=calSelected.get(Calendar.MONTH);
218. finalintiSelectedDay=calSelected.get(Calendar.DAY_OF_MONTH);
219. calCalendar.setTimeInMillis(calStartDate.getTimeInMillis());
220. for(inti=0;i 221. finalintiYear=calCalendar.get(Calendar.YEAR); 222. finalintiMonth=calCalendar.get(Calendar.MONTH); 223. finalintiDay=calCalendar.get(Calendar.DAY_OF_MONTH); 224. finalintiDayOfWeek=calCalendar.get(Calendar.DAY_OF_WEEK); 225. DateWidgetDayCelldayCell=days.get(i); 226. //checktoday 227. booleanbToday=false; 228. if(calToday.get(Calendar.YEAR)==iYear) 229. if(calToday.get(Calendar.MONTH)==iMonth) 230. if(calToday.get(Calendar.DAY_OF_MONTH)==iDay) 231. bToday=true; 232. //checkholiday 233. booleanbHoliday=false; 234. if((iDayOfWeek==Calendar.SATURDAY) 235. ||(iDayOfWeek==Calendar.SUNDAY)) 236. bHoliday=true; 237. if((iMonth==Calendar.JANUARY)&&(iDay==1)) 238. bHoliday=true; 239. 240. dayCell.setData(iYear,iMonth,iDay,bToday,bHoliday, 241. iMonthViewCurrentMonth); 242. bSelected=false; 243. if(bIsSelection) 244. if((iSelectedDay==iDay)&&(iSelectedMonth==iMonth) 245. &&(iSelectedYear==iYear)){ 246. bSelected=true; 247. } 248. dayCell.s
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 日历 方式 显示 日期 选择 组件