您的位置:首页 > 编程语言 > Java开发

关于自定义Calendar的若干问题

2013-06-06 20:48 162 查看
这两天有在做一个Calendar,相当是在模仿手机自带Calendar所做的。效果如下:



而做这个Calendar的时候有五个要求:
1.显示当天日期2.显示当前时间3.区分小时4.区分过去与将来5.进入显示前后8小时
那么如图所示,最上面的红色为一个TextView,显示当天日期;有一条蓝色的线显示当前时间;区分小时也就是显示出24小时,在左侧;而区分过去与将来则是用灰色和白色来区分;这个图就是进入App所显示的画面,显示了前后的8个小时。而图中的绿色是我所添加的事件要显示的颜色,在这里就先不介绍了。

那么在这里面遇到的问题有:
1.如何显示当前日期?这个就容易解决了,在Java中有一个Calendar这个类,用这个类可以很轻松的获取当前日期,并在TextView中显示。//显示当前日期mCalendar = Calendar.getInstance();mHours = mCalendar.get(Calendar.HOUR_OF_DAY);
int year = mCalendar.get(Calendar.YEAR);
int month = mCalendar.get(Calendar.MONTH) + 1;
int day = mCalendar.get(Calendar.DAY_OF_MONTH);
int week = mCalendar.get(Calendar.DAY_OF_WEEK);
String Sweek = null;
switch (week) {
case 1:Sweek = "周一";break;
case 2:Sweek = "周二";break;
case 3:Sweek = "周三";break;
case 4:Sweek = "周四";break;
case 5:Sweek = "周五";break;
case 6:Sweek = "周六";break;
case 7:Sweek = "周日";break;
}
mTextTime.setText(year + "." + month + "." + day + " " + Sweek);2.如何实现显示当前时间?由于我们是以ListView来区分小时的,所以我们只要先获取当前时间的分钟数,再除以60,得到的分数再乘以ListView每一个Item的高度,那么在相对就的Position中去画,就好办了。mCalendar = Calendar.getInstance();
// 取得当前时间
mNumOne = mCalendar.get(Calendar.MINUTE);
mNumTwo = mNumOne / 60;
mTimes = (int) (mNumTwo * Height); //画当前时间线mPaint.setColor(Color.BLUE); canvas.drawRect(0,mTimes, Height * 9, mTimes + 2, mPaint);3.怎么实现区分过去与将来?区分过去与将来,那官方给的思路就是在当前时间线以上和下面,以不同颜色来进行处理,让人一目了然。而要实现这个功能,就要先找到当前时间以前的Position,然后再将它们画成灰色;找到当前时间所在Position,然后当前时间线以上为灰色,以下还是白色。4.怎么实现进入显示前后8小时?这就需要用到一个ListView的方法了,mList.setSelection()在参数中传入不同的整数,就会让App在进入以后置顶不同的ListView了。例如,mList.setSelection(7),会将ListView的第7项显示在手机屏幕的最顶端
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息