2014-8-10 mars安卓视频 Lesson16-18

来源:互联网 发布:淘宝发布宝贝流程 编辑:程序博客网 时间:2024/05/20 19:48

经过上次被百度空间坑了之后,再结合之前使用百度空间的各种不愉快,想想写技术博客什么的话还是用CSDN好一些(刚刚发现CSDN会自动保存草稿,业界良心!)。之前的博客地址为:http://hi.baidu.com/xiao_xie

呐,新的旅程就这么开始啦~

Lesson 16 时间与日期

1、TimePicker的使用方法

什么是TimePicker呢?

  

在xml布局文件中

 <TimePicker         android:id="@+id/firstTimePicker"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        />
模拟器显示:


接下来我们来看如何在代码中实现TimePicker,就是我们如何知道用户选择了哪个时间。这主要是利用onTimeChangedListener监听器类的OnTimeChanged方法来看用户把时间改到什么程度了。


2、OnTimeChangeLIstener的使用方法

class TimeLisener implements OnTimeChangedListener{//view:该对象代表着TimePicker//hourOfDay:用户所选择的小时//minute:用户所选择的分钟@Overridepublic void onTimeChanged(TimePicker view, int hourOfDay, int minute) {System.out.println("Hour:"+hourOfDay+",minute:"+minute);}}
PS:之前关于TimePicker对象的声明、TimeListener的声明及timePicker与监听器的绑定已经省略了,这里只贴出了监听器类的代码。

执行之后控制台调试界面将输出用户对时间的调整状态(不过不知道为什么切换PM与AM时时间输出没有改变):


如果要使用24小时制时间怎么办呢?

这需要用到Is24HourView方法:


在模拟器里AM和PM消失了,这样就变成24小时制了:


接下来还有一个问题,如果仔细观察调试界面输出的信息的话可以发现,用户每动一下时钟,相应的信息就会输出。能不能让用户调整完了之后按下按钮我们再看用户调整的时间呢?我们通过增加一个按钮来实现这个功能。

在xml文件中的布局代码:


java代码:


模拟器中运行效果及调试窗口显示消息如下所示:


TimePicker显示时间时默认显示的是系统时间,如果想要让它开始就显示一个指定的时间,可以修改ButtonListener类中firstTimePIcker的getCurrentHour为setCurrentHour,分钟亦如此~


3、DatePicker的使用方法

要实现通过点击一个按钮来获取当前的日期信息可以采用与上述TimePicker类似的方法,在此不再赘述,直接上图说明:

  

模拟器显示:

调试窗口显示结果:

PS:java程序当中月份从0开始算起,但日期还是从1开始算起


4、AnalogClock的使用方法


它在实际开发当中用得不多,只是此处讲时间,就一并将它拿了讲了。

    



Lesson 17 ProgressBar

1、Android当中的进度条


2、各种进度条之间的关系



3、ProgressBar进度条的风格

在本课第一张图中,第一个进度条是默认风格的进度条,第二张图片(右上)的水平风格的进度条,第三张图(左下)是可拖曳形式的进度条,第四张图是一种评价类型的进度条。第三种和第四种我们将下在一课进行学习。这节课先说前两种。

2~6都是对默认进度条的风格设置,只有1是水平进度条的风格。据说2、3适合深色背景,3~6更适合白色的背景色能看得更清楚一些,但实验结果显示其实二者没有区别。


其实关于风格的属性设置就在于红色划线处的这句xml语句。由于结果不明显,此处就不贴图进行说明了。

进度条的主要属性有以下几个


以下是对进度条属性的设置代码及结果:


在代码中怎么实现这种效果呢?


那如果在Xml文件和java代码中同时对进度条进行了设置以哪个为准呢?根据就近原则,代码会覆盖xml文件,故以代码中的设置为准。

接下来介绍一个有意思的方法——isIndeterminate()用于判断是转圈方式的进度条还是水平方向的进度条。转圈的是不确定的,没有告诉用户这个运算什么时候结束,不是明确的,返回true。水平风格的是确定的,调用该方法返回false。

还有两个有趣的方法:

incrementProgressBy(10);//当前进度增加10

progressBar.incrementSecondaryProgressBy(10);//第二进度增加10

我们通过设置两个按钮来更清晰地说明这个问题。使之实现点第一个按钮增加主进度的进度,点第二个按钮来增加第二进度。

xml布局文件:


java代码:


模拟器第一个按钮和第二个按钮依次点击一次之后(灰色代码max,深蓝色代表第一进度,浅蓝色代表第二进度):



Lesson 18 SeekBar和Rating Bar

1、SeekBar的主要属性

首先,SeekBar是进度条是可以拖动的,接下来介绍SeekBar的主要属性:


接下来用代码演示一下这三个属性:

布局文件:                                                                                                                          java代码:

        

模拟器显示:


2、OnSeekBarChangeListener


一、进度发生变化触发监听器。用户可以来回拖曳,需要知道进度到了什么位置

二、当用户开始拖曳进度时将会调用该方法

三、当用户停止拖曳进度时将会调用该方法

接下来用代码来实现监听器及其三个方法:


结果:


3、RatingBar的主要属性

RatingBar是用来评分的一种进度条。


注:stepSize是指从在往右滑动一次性前进的步伐。(半颗星、一颗星或者其他)

4、OnRatingBarChangeListener


和SeekBar一样,通过设置一个按钮进行点击来增加RatingBar进度的方法来演示RatingBar的监听器:

连续两次点击button,之后直接用鼠标将进度条拖曳到第4颗星:

对于上述操作调试输出结果(注意fromUser的变化,用button对进度条进行增加是false,只有用户直接用鼠标拖曳才是true):



至此,mars老师安卓教学视频第一季重制版到这里正式结束了。

这一季下来大致的收获是学会了一些基本控件的使用方法,以及如何利用监听器监听控件的行为。额外的有在eclipse中快捷键的使用,这一点让自己觉得“啊原来编程没有那么难啊”,但路漫漫其修远兮,要学的东西还有太多太多。最近心情也颇不平静,与人相处既欢愉也心累,所以想要慢慢尝试着过一种“如何生活只剩下编程该怎么办”的生活。接下来的话要把一本编程入门经典快啃完,再看mars老师第二季的重制版视频。

0 0
原创粉丝点击