简单!
全部博文(366)
分类: 嵌入式
2012-09-30 11:49:50
1、自动完成文本框(AutoCompleteTextView)
AutoCompleteTextView从EditText派生出来,实际上也是一个文本编辑框,但它比普通编辑框多一个功能:当用户输入一个字 符后,自动完成文本框会显示一个下拉菜单,供用户从中选择,当用户选择某个菜单项之后,AutoCompleteTextView按用户选择自动填写该文 本框。
使用AutoCompleteTextView很简单,只要为它设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本。
2、Spinner
Spinner其实就是一个列表选择框。不过Android的列表选择框不是需要显示下拉列表的,而是相当于弹出一个菜单供用户选择。
Spinner是ViewGroup的间接子类,因此它可以作为容器使用。
使用Spinner时已经可以确定下拉列表框里的列表项,则完全不需要编写代码,只要为Spinner指定android:entries属性既可实现一个下拉列表框。
对Spinner而言,它也许需要显示一个供用户选择的列表----至于这个列表是以数组的形式给出,还是以其它什么形式并不重要,重要的是Spinner知道它的每项应该显示什么。
为了让Spinner知道每项应该显示什么,我们可以提供一个内容Adapter。这个Adapter负责决定Spinner列表的每项显示什么。
3、日期、时间选择器(DatePicker和TimePicker)
两个控件都从FrameLayout派生出来,其中DatePicker供用户选择日期;而TimePicker供用户选择时间。
DatePicker和TimePicker在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期、时 间;如果程序需要用户选择的日期、时间,则可以通过为DatePicker添加OnDateChangeListener进行监听,为 TimePicker添加OnTimerChangeListener进行监听实现。
4、进度条(ProgressBar)
进度条是UI设计中一种非常实用的组件,通常用于向用户显示某个耗时操作完成的百分比。因此进度条可以动态显示进度,避免长时间地执行某个耗时操作时,让用户感觉程序失去了响应,从而更好地提高用户界面的友好性。
ProgressBar提供如下方法操作进度:
setProgress(int):设置进度的完成百分比。
incrementProgressBy(int):设置进度条的进度增加或减少。当参数为正时进度增加,当参数为负时进度减少。
ProgressBar常用的XMl属性
android:max 设置进度条的最大值
android:progress 设置进度条已完成的进度值
android:progressDrawable 设置进度条的轨道的绘制情况
android:indeterminate 该属性为true,设置进度条不精确显示进度
android:indeterminateDrawable 设置绘制不显示进度的进度条的Drawable对象
android:indeterminateDuration 设置不精确显示进度的持续时间
还有一种进度条可以直接在窗口标题上显示,这种进度条甚至不需要使用ProgressBar组件,它是直接由Activity的方法启动。为了在窗口上显示进度条,需要经过:
(1)调用Activity的requestWindowFeature()方法,该方法跟据传入的参数可以启动特定的窗口特 性,例如传入Window.FEATURE_INDETERMINATE_PROGRESS在窗口标题上显示不带进度的进度条;传入 Window.FEATURE_PROGRESS则显示带进度的进度条。
(2)调用Activity的setProgressBarVisibility(boolean)或setProgressBarIndeterminateVisibility(boolean)方法即可控制进度条的显示和隐藏。
5、拖动条(SeekBar)
拖动条和进度条非常相似,只是进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标识数值---而且拖动条允许用户拖动滑块来改变值,因此拖动条用于对系统的某种数值进行调节,比如音量调节。
SeekBar允许改变拖动条的滑块外观:
android:thumb:指定一个Drawable对象,该对象将作为自定义滑块。
为了让程序能响应拖动条滑块位置的改变,程序考虑为它绑定一个OnSeekBarChangeListener监听器。
6、星级评分条(RatingBar)
星级评分条与拖动条十分相似,他们甚至有相同的父类:AbsSeekBar。实际上星级评分条和拖动条的用法、功能十分接近:它们都允许用户通过拖动来改变进度。RatingBar和SeekBar的最大区别是:RatingBar通过星星表示进度。
为了让程序响应星级评分条评分的改变,程序考虑使用OnRatingBarChangeListener监听器。
常用的XML属性如下:
android:isIndicator:设置该星级评分条是否允许用户改变(true为不允许修改)
android:numStars:设置星级评分条有多少个星级
android:rating:设置星级评分条的默认星级
android:stepSize:设置每次最少需要改变多少个星级
7、选项卡(TabHost)
TabHost是一种非常实用的组件,TabHost可以很方便地在窗口上放置多个标签页,每个标签页相当于获得了一个与外部 容器相同大小的组件摆放区域,通过这种方式,就可以在一个容器里放置更多组件,例如许多手机系统都会在同一个窗口定义多个标签页来显示通话记录,例如“未 接电话”、“已接电话”、“呼出电话”等。
TabHost提供如下两个方法来创建选项卡、添加选项卡:
newTabSpec(String tag):创建选项卡
addTab(TabHost.TabSpec tabSpec):添加选项卡
使用TabHost的一半步骤:
(1)在界面布局中定义TabHost组件,并为该组件定义该选项卡的内容
(2)Activity应该继承TabActivity
(3)通过TabActivity的getTabHost()方法获取TabHost对象
(4)通过TabHost对象的方法来创建选项卡、添加选项卡
如果程序要监控TabHost里当前标签页得改变,可以为它设置TabHost.OnTabHostChangeListener监听器。
8、滚动视图(ScrollView)
ScrollView由FrameLayout派生而出,它就是一个用于为普通组件添加滚动条的组件。ScrollView里 最多只能包含一个组件,而ScrollView的作用就是为该组件添加垂直的滚动条。如果要添加水平滚动条,则可借助另一个滚动视 图:HorizontalScrollView来实现。
9、列表视图(ListView和ListActivity)
ListView是手机系统中使用非常广泛的一种组件,它以垂直列表的形式显示所有列表项。
创建ListView的两种方法:
(1)直接使用ListView进行创建
(2)让Activity继承ListActivity
一旦在程序中获得了ListActivity之后,接下来就要为listView设置它要显示的列表项了,在这一点 上,ListView和AutoCompleteTextView、Spinner类似,都需要一个供显示的列表项,这就需要借助于内容Adapter, 内容Adapter负责提供需要显示的列表项。
10、可展开的列表组件(ExpandableListView)
ExpandableListView是ListView的子类,它在普通ListView的基础上进行了扩展,它把应用中的列表项分为几组,每组里又可包含多个列表项。
ExpandableListView的用法跟普通ListView非常相似,只是ExpandableListView所显示的列表项应该由ExpandableAdapter提供。
11、网格视图(GridView)和图像切换器(ImageSwitcher)
GridView用于在界面上按行、列分布的方式来显示多个组件。
GridView和ListView有共同父类AbsListView,它们的区别在于:ListView只在一个方向分布,而GridView会在两个方向分布。
与ListView相似,GridView也需要通过Adapter提供显示的数据:开发者可通过SimpleAdapter 来为GridView提供数据,也可以通过开发BaseAdapter的子类为GridView提供数据。不管使用哪种方式,GridView与 ListView用法基本一致。
ImageSwitcher由FrameLayout派生而来,它跟ImageView很相似,它们都可以用于显示图片,但ImageSwitcher比普通ImageView多一个功能:它所显示的图片切换时可以设置动画效果。
使用ImageSwitcher时往往需要为它设置一个ImageSwitcher.ViewFactory,实现 ImageSwitcher.ViewFactory时需要实现一个makeView()方法,该方法通常会返回一个ImageView,而 ImageSwitcher则负责显示这个ImageView。
12、画廊视图(Gallery)
Gallery与Spinner两个组件有共同的父类:AbsSpinner,表明Gallery和Spinner都是一个列 表框。它们的区别是Spinner显示的是垂直列表选择框,Gallery显示的是水平列表选择框。它们还有一个区别:Spinner的作用是供用户选 择,而Gallery则允许用户通过拖动来查看上一个、下一个列表项。
Gallery的用法基本上与Spinner相似,只要为它提供一个内容Adapter即可,该Adapter的 getView方法所返回的View将作为Gallery列表的列表项:如果程序需要监控到Gallery选择项的改变,可以通过为Gallery添加 OnItemSelectedListener监听器即可实现。