发布时间 : 星期日 文章基于Android的日历系统的设计与实现本科毕业设计论文更新完毕开始阅读a38effed4bfe04a1b0717fd5360cba1aa8118c92
华北电力大学本科毕业设计(论文)
图3-2 主界面的布局示意图
3.3 主要算法与核心代码实现
3.3.1 主界面
主界面提供日期信息显示,允许呼出菜单栏,并支持左右滑动。 (1)主界面显示Activity
public void addTextToTopTextView(TextView view){
StringBuffer textDate = new StringBuffer();
draw = getResources().getDrawable(R.drawable.top_day); view.setBackgroundDrawable(draw); textDate.append(calV.getShowYear()).append(\年\
calV.getShowMonth()).append(\月\
if (!calV.getLeapMonth().equals(\.getLeapMonth() != null) {
textDate.append(\闰\.getLeapMonth()).append(\月\
.append(\
}
gridView = new GridView(this); gridView.setNumColumns(7); gridView.setColumnWidth(46);
14
华北电力大学本科毕业设计(论文)
if(Width == 480 && Height == 800){ }
gridView.setGravity(Gravity.CENTER_VERTICAL);
gridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); gridView.setHorizontalSpacing(1);
gridView.setColumnWidth(69);
gridView.setVerticalSpacing(1);
gridView.setBackgroundResource(R.drawable.gridview_bk); (2)创建菜单
public boolean onCreateOptionsMenu(Menu menu) {
menu.add(0, menu.FIRST, menu.FIRST, \今天\
menu.add(0, menu.FIRST+1, menu.FIRST+1, \跳转\menu.add(0, menu.FIRST+2, menu.FIRST+2, \日程\menu.add(0, menu.FIRST+3, menu.FIRST+3, \日期转换\return super.onCreateOptionsMenu(menu); }
(3)左右滑动屏幕
public class CalendarActivity extends Activity implements OnGestureListener {
@Override
public boolean onFling(MotionEvent e1, MotionEvent e2, float velocityX,
float velocityY) {
int gvFlag = 0; //每次添加gridview到viewflipper中时给的标记 if (e1.getX() - e2.getX() > 120) {
addGridView(); //添加一个gridView jumpMonth++; //下一个月 calV = new CalendarView(this,
//像左滑动
getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);
gridView.setAdapter(calV); //flipper.addView(gridView); addTextToTopTextView(topText); gvFlag++;
flipper.addView(gridView, gvFlag);
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));
15
华北电力大学本科毕业设计(论文)
this.flipper.showNext(); flipper.removeViewAt(0); return true;
} else if (e1.getX() - e2.getX() < -120) {
addGridView(); //添加一个gridView jumpMonth--; //上一个月 calV = new CalendarView(this,
//向右滑动
getResources(),jumpMonth,jumpYear,year_c,month_c,day_c);
gridView.setAdapter(calV); gvFlag++;
}
return false; }
return true;
3.3.2 菜单项目操作
菜单栏包含四项功能操作;当今日期定位、指定日期跳转、日程管理以及公农历转化。 (1)定位至今天日期
public boolean onMenuItemSelected(int featureId, MenuItem item) { switch (item.getItemId()){ case Menu.FIRST: //跳转到今天
int xMonth = jumpMonth; int xYear = jumpYear; int gvFlag =0; jumpMonth = 0; jumpYear = 0;
if(xMonth == 0 && xYear == 0){
//nothing to do
}else if((xYear == 0 && xMonth >0) || xYear >0){
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_in)); this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_left_out));
this.flipper.showNext();
}else{
this.flipper.setInAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_in));
16
华北电力大学本科毕业设计(论文)
this.flipper.setOutAnimation(AnimationUtils.loadAnimation(this,R.anim.push_right_out));
this.flipper.showPrevious();
}
flipper.removeViewAt(0);
Break;
(2)指定日期跳转
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear,
int dayOfMonth) { //不在查询范围内
new AlertDialog.Builder(CalendarActivity.this).setTitle(\错误日期if(year < 1901 || year > 2049){
new DatePickerDialog(this, new OnDateSetListener() {
\跳转日期范围(1901/1/1-2049/12/31)\确认\
}else{
gridView.setAdapter(calV); addTextToTopTextView(topText); gvFlag++;
flipper.addView(gridView,gvFlag);
if(year == year_c && monthOfYear+1 == month_c){ }
//跳转之后将跳转之后的日期设置为当期日期 year_c = year; } break;
}
month_c = monthOfYear+1; day_c = dayOfMonth; jumpMonth = 0; jumpYear = 0;
//nothing to do
flipper.removeViewAt(0);
},year_c, month_c-1, day_c).show();
(3)日程管理 case Menu.FIRST+2:
17