学习笔记|AS入门(五) 高级控件篇(中)

本篇继续学习高级控件及独具特点的监听器,目录以下:

  • ScrollView 滚动视图
  • ProgressBar 进度条
  • ProgressDialog 对话框形式进度条
  • SeekBar 可拖动进度条
  • DataPicker 日历选择器
  • DataPickerDialog 对话框形式日历选择器
  • TimePicker 时间选择器
  • TimePickerDialog 对话框形式时间选择器

1.ScrollView 滚动视图android

当展现的内容不少屏幕显示不下时就须要用ScrollView来显示完整的视图。下图对比了有无ScrollView两种不一样的状况:布局

能够看到当整个页面只有一个TextView时由于内容不完整视觉上感受很很差,若是加上ScrollView,用户就能够滑动滚动条看到后面的内容。ScrollView使用起来也很容易,只要将TextView做为它的子标签就能够了,若是不想看到滚动条,能够设置属性android:scrollbars="none"隐藏起来。另外,根据须要也可使用水平滚动视图HorizantalScrollView,替换SrollView标签就能够了。post

以后在MainActivity获取TextView实例并set内容,运行以后就能看到以前的效果了。学习

再介绍一个监听器OnTouchListener,它能够监听ScrollView滑行状况,好比但愿用户看完文本后继续添加一些文本内容,那么就能够在监听到ScrollView到达底部的事件后作出相应的动做,代码见下:3d

有必要对上述代码作一些解释:从 event.getAction() 能够监听到滑块各类状态,其中一种状态 MotionEvent.ACTION_MOVE 表示滑块在滑动的过程当中。接下来在判断文本处于最顶端仍是最低端时,使用了ScrollView三个测量高度的方法: scrollView.getChildAt(0).getMeasuredHeight() 表示ScrollView第一个子标签即TextView文本内容总长度, scrollView.getHeight() 表示ScrollView高度即屏幕总高度, scrollView.getScrollY() 表示滚动条滑动距离。易得出当滑动距离+屏幕总高度=文本总长度时,正好到达文本最低端。调试结果如图:调试

2.ProgressBar 进度条cdn

ProgressBar一般用于展现某个耗时操做完成的进度,来更好的提高用户界面的友好性。首先来学习ProgressBar几个关键属性:对象

max:最大显示进度 progress:第一显示进度 secondaryProgress:第二显示进度 三者关系见图:blog

style:进度条的类型,上图显示了四种常见的类型--大、中、小环形进度条以及水平进度条。其实每种类型的进度条显示风格也是多种多样的,以水平进度条举例,实际上style可选值中 @android:style/ 下系统还提供了更多可选风格,好比选择第一项:事件

进度条就换了个风格。

ctrl点进去看这个style源码,发现整个进度条风格由不少Item共同组成,好比经过第二项progressDrawable就能够实现自定义一个进度条样式了。

介绍完ProgressBar几个关键属性后,再经过一个小demo学习它的几个关键方法。在布局里准备三个button和一个textview,用于控制进度条加减和重置以及显示进度条具体进度数据。

接着在MainActivity获取到全部控件的实例并给全部按钮都设置好监听器。为了显示初始进度百分比,从ProgressBar三个get方法分别获取到三个进度数值,通过相应的计算即可以获得了。

按钮监听事件中,进度的重置直接用set方法,而进度的增长和减小就须要increment方法,参数为正数即加,负数即减。这里让进度条每次变化十个百分比。

运行后点击增长按钮效果见图,减小和重置功能也能很好的完成:

3.ProgressDialog 对话框形式进度条

学习完ProgressBar,趁热打铁,看看Dialog的进度条如何作到。直接在上个demo布局最后再添加一个Button,用于打开一个ProgressDialog,给它设置监听器后,在点击事件里完成一个ProgressDialog的代码见下:

用ProgressDialog的各类set方法设置了对话框页面风格(进度条样式、标题和图标)、进度条属性和一个名为“确认”的按钮以及对应的点击事件,且这个对话框可经过返回键取消,最后必定要有 progressDialog.show() 不然以前设置都功亏一篑对话框是没法弹出来的。另外再说明一个方法setIndeterminate(),当值为true表示不精确显示进度条,好比环形进度条就会一直转圈,而值为false表示精确显示进度条,好比此例中水平进度条下就会显示刻度。运行程序后结果以下:

当点击肯定按钮以后,确实弹出一个查当作功的Toast。

4.SeekBar 可拖动进度条

在咱们调整音量或者听歌的时候,会有这样的进度条上面带有滑块容许用户拖动以改变当前进度的大小,这就是SeekBar。由于都是进度条,SeekBar的关键属性就很少说了,这里认识一个监听器OnSeekBarChangeListener,用于监听SeekBar上滑块运行状态。接下来经过一个小例子学习如何使用,先准备这样一个布局:

在MainActiviity给SeekBar注册监听器并具体实现三个方法,对应滑块三个状态,其中onProgressChanged()方法会返回当前进度progress数值使之显示在第一个文本框。

运行结果以下,“开始拖动”一瞬间很快就进入到“正在拖动”的状态。

5.DataPicker 日历选择器

当咱们在备忘录写每日行程或设置闹钟的时候必不可少须要填写日期和时间,安卓有提供相应的选择器,帮助咱们快速选择日期和时间,剩下部分就来介绍这些Picker。

DataPicker日历选择器可选择年月日,下图预览可看到就是一个很常见的日历。

既然是选择器,那么确定能够监听到用户选择的内容,因此每一个选择器当然有对应的监听器。如今作这样的小demo来看监听器的做用,标题栏显示当前日期和时间,每当用户在DataPicker上选择一个日期后,标题栏实时变化以显示当前选择的日期。

先利用系统提供的Calendar类可获取到当前年月日时分,这里注意Calendar计算月是从0开始。初始时标题栏显示当前时间。

DataPicker想要注册监听器OnDateChangedListener,要经过它的一个方法init()并提供四个参数,前三个参数正是以前获取的年月日,表示初始时日历上所显示的日期,注意月份的计算和Calendar相同,因此不须要加1,第四个参数是监听器对象。触发事件后会返回被用户选择的年月日三个参数,再显示到标题上便可。

看看运行后效果吧!

6.DataPickerDialog 对话框形式日历选择器

根据不一样的需求,还能够经过对话框的形式选择日期。方法是直接在代码中new一个DataPickerDialog对象,再show() 出来就完成了。和DataPicker很是类似的,初始化DataPickerDialog的时候须要五个参数,第一个参数是上下文,而后就是监听器OnDateSetListener对象,以后才是年月日。

此时程序一启动会先弹出一个对话框,用户可直接选择日期,肯定后就能够看到刚刚选择的日期显示在标题上了。

7.TimePicker 时间选择器

下面来看看可选择时分的TimePicker 时间选择器,可在钟表上先选择小时的数值,再选择分钟的数值。

比DataPicker简单的是,它能够直接经过setOnTimeChangedListener()方法注册监听器OnTimeChangedListener,就不须要提供其余参数了。这里一样地在事件触发后让标题显示被选择的时分。

运行后:

8.TimePickerDialog 对话框形式时间选择器

最后一个TimePickerDialog,学到如今,是否是能很容易掌握了?注册监听器OnTimeSetListener过程以下:

运行:

好啦,本篇内容暂时告一段落,还有一篇的高级控件等你来学习哦!

相关文章
相关标签/搜索