UI组件之布局管理器
A. 线性布局(LinearLayout):控制各组件横向排列,到头之后,剩下的组件将不会显示出来。常用属性
1. android:baselineAligned(boolean):该属性布局为false将阻止该布局管理器与它的子元素基线对齐。相关方法setBaselineAligned(boolean)。
2. android:divider:设置垂直布局时两组件的分割条。相关方法:
setDividerDrawable(Drawable)
3. android:gravity:设置组件对齐方式,支持top、buttom、left、right等几个属性值,同时也支持组合的属性值。方法:set Gravity(int)
B. 表格布局(TableLayout):TableLayout继承了LinearLayout,本质依然是线性布局管理器。通过添加TableRow来控制其他组件的行和列。单元格设置为宽度可以收缩(Shrinkable)、宽度可以被拉伸(Strechable)、单元格被隐藏(Collapsed)。TableLayout支持所有的LinearLayout 包含的XML属性,除此之外还有以下属性:
1. android:collapsedColumns:相关方法setColumnCollapsed(int,boolean)设置需要被隐藏的列序号,多个用逗号隔开。
2. android: shrinkcolumns:相关方法setShrinkAllColumns( boolean)设置允许被收缩的列序号,多个用逗号隔开。
3. android: strechcolumns:相关方法 set StrechAllColumns(boolean)设置允许被拉伸的列的列序号,多个用逗号隔开
C. 帧布局(FrameLayout):直接继承了ViewGroup组件,为每个组件创建一个空白区域,每个子组件占用一帧,根据其gravity属性对齐。常用属性:
1. android:foreground:相关方法setForeground(Drawable) 设置该帧容器的前景图像。
2. android:foregroundGravity:相关方法 setForegroundGravity(int)定义绘制前景图像的gravity属性。
D. 相对布局(RalativeLayout):子组件的位置总是相对于兄弟组件、父组件、容器决定的。提供了一个内部类:RalativeLayout.LayoutParams
RalativeLayout常用属性:
1. android:gravity: 相关方法setGravity(int),设置该布局容器内各子组件的对齐方式。
2. android:ignoreGravity: 相关方法setIgnoreGravity(int) 设置哪个组件不受gtavity属性的影响。
UI组件之TextView及其子类
A. 文本框(TextView)与编辑框(EditText)的功能和用法:
1. TextView:直接继承自View,还是EditText、Button的父类。子类EditText允许用户编辑文本框内容。提供了大量的XML属性,通过这些属性来控制TextView中文本的行为:设置字号(android:textSize=”xx pt”)、指定背景(android:background=””)、字母大写、增加链接(android:autoLink=”email/phone”)等
2. EditText:它使用了大部分TextView的XML属性,可以接受用户输入,最重要的属性就是inputType。EditText还派生了两个类,AutoCompleteTextVeiw:带有自动完成功能的编辑框;ExtractEditText: 并不是UI组件。而是EditText组件的底层服务类,负责全屏输入法支持。
B. 按钮组件的功能和用法
1. Button继承了TextView,按钮提供给用户单击,触发onclick事件。同样可以利用textview的XML属性来为按钮组件设置不同的样式风格背景等。使用9Patch图片作为按钮背景可以按照自己的意图缩放图片某个部分。后缀名为.9.png。
2. 在活动中,通过findViewById()方法获取布局文件中的button组件。传入的数据为R.id.button,返回一个View对象,在向下转型为Button类型得到按钮实例,再通过调用SetOnClickListener()方法为按钮注册一个监听器,点击就执行onClick()方法。
3. 单选按钮(RadioButton)和复选框(CheckBox):继承自Button类,多了一个可选中的功能(android:cheched属性)。
4. 状态开关按钮ToggleButton与开关Switch:也是Button的子类,类似于复选框,通常用于切换程序的某种状态。
C. 时钟(AnalogClock和DigitalClock):
1. DigitalClock本身就继承了TextView,显示内容总是当前时间。
2. AnalogClock则继承View组件,重写了View的onDraw方法。
D. 计时器(Chronometer)继承自TextView,显示从某个时刻到现在经历的时长。
常用方法有:setBase(long base ):设置起始时间;setFormat(String format):设置显示时间制式;start():开始计时;stop():停止计时;
SetOnChronometerTickListener(Chronometer.OnChronometerTickListener):为计时器绑定事件监听器。
UI组件之ImageView及其子类
ImageView继承自View组件,主要用于显示图片。派生的子类有ImageButton、ZoomButton等。属性中android:scaleType属性设置显示的图片如何移动和缩放以适应ImageView的大小,有多个属性值。
UI组件之AdapterView及子类
A. AdapterView本身是一个抽象基类,继承了ViewGroup,本质是容器,可以包含多个列表项(由Adapter提供)并将它们用合适的方式显示出来(调用AdapterView的setAdapter(Adapter)方法设置Adapter即可)。派生的子类用法相似,只是在显示界面有一定区别。
B. 三个子类:AbsListView、AbsSpinner和AdapterViewAnimator,依然是抽象的,实际使用时依然用子类。
C. 列表视图(ListView)和ListActivity:ListView以垂直列表的形式显示列表项,可以直接用ListView进行创建,也可以让Activity继承ListActivity(相当于该Activity显示组件为ListView)。
UI组件之AdapterView及子类
A. AdapterView本身是一个抽象基类,继承了ViewGroup,本质是容器,可以包含多个列表项(由Adapter提供)并将它们用合适的方式显示出来(调用AdapterView的setAdapter(Adapter)方法设置Adapter即可)。派生的子类用法相似,只是在显示界面有一定区别。
B. 三个子类:AbsListView、AbsSpinner和AdapterViewAnimator,依然是抽象的,实际使用时依然用子类。
C. 列表视图(ListView)和ListActivity:ListView以垂直列表的形式显示列表项,可以直接用ListView进行创建,也可以让Activity继承ListActivity(相当于该Activity显示组件为ListView)。
D. adapter接口及实现类:派生了两个子接口(ListAdapter和SpinnerAdapter)ListAdapte为AbsListView提供列表项,而SpinnerAdapter为AbsSpinner提供列表项。常用实现类有:
1. ArrayAdapter:通常用于将数组或List集合的多个值包装成多个列表项
2. SimpleAdapter:可用于将List集合的多个对象包装成多个列表项
3. SimpleCursorAdapter:类似于SimpleAdapter只用于包装Cursor提供的数据
4. BaseAdapter:通常用于被扩展
创建ArrayAdapter时必须指定如下三个参数:
1. Context:代表了访问整个Android应用的接口,几乎创建所有组件都需要传入Contexe对象
2. textViewResourceld:一个资源id,该资源id代表一个TextView
3. 数组或List:该数组或List将负责为多个列表项提供数据。
E. 自动完成文本框(AutoCompleteTextView)的功能和用法:
从EditText派生而出,当用户输入一定字符后自动完成文本框会显示一个下拉菜单,供用户选择,当用户选择摸个菜单项之后,AutoCompleteTextView按用户选择自动填写该文本框。使用AutoCompleteTextView,只要为它设置一个Adapter,该Adapter封装了AutoCompleteTextView预设的提示文本。
F. 网络视图(GridView)的功能和用法:
用于在界面上按行、列分布的方式来显示多个组件。和ListView有共同的父类(AbsListView),ListView只显示一列,GridView则可以显示多列。可以通过四种创建Adapter来提供显示数据。
G. 可展开的列表组件(ExpandableListView):
是List的子类,把应用中的列表项分为几组,每组又可包含多个列表项。实现ExpandableListView有如下三种方式:
1. 使用SimpleExpandableListAdapter将两个List集合包装成ExpandableListAdapter。
2. 扩展Base ExpandableListView实现ExpandableListAdapter
3. 使用SimpleCursorTreeAdapter将Cursor中的数据包装成simpleCursorTreeAdapter
H. Spinner的功能和用法
一个列表选择框,弹出一个菜单供用户选择。只要为Spinner指定android:entries属性即可实现Spinner,如需动态的进行定制,则需要Adapter为Spinner提供列表项。
I. 画廊视图(Gallery)的功能和用法:
显示一个水平的列表选择框,允许用户通过拖动来查看上一个、下一个列表项。只要为它提供一个内容Adapter即可。Adapter方法返回的View将作为Gallery列表的列表项。可以通过OnItemSelectdListener监听器监控Gallery选择项的改变。
J. AdapterViewFlipper的功能和用法:
显示Adapter提供的多个View组件,但每次只能显示一个,程序可以通过showPrevious()和showNext()方法控制。还可以在切换时使用渐隐渐现上午动画效果。还可以调用startFlipping()控制它自动播放下一个View组件。
K. StackView的功能和用法:
也用于显示Adapter提供的系列View。将会以堆叠的方式来显示多个列表项。提供了两种控制方式:
1. 拖走StackView中处于顶端的View。下一个View将会显示出来。将上一个View拖进StackView,将使之显示出来。
2. 通过调用StackView的showNext()、showPrevious()控制显示上一个、上一个组件。
UI组件之ProgressBar及其子类:
本身代表了进度条组件,它还派生了两个常用组件,SeekBar和RatingBar。
A. 进度条(ProgressBar)的功能和用法:用于向用户显示某个耗时操作完成的百分比,进度条可以动态的显示进度,避免长时间执行某个操作时,让用户感觉失去响应。@android:style/Widget.ProgressBar.Horizontal(水平进度条)
@android:style/Widget.ProgressBar.Inverse(普通大小的环形进度条)
@android:style/Widget.ProgressBar.Large(大环形进度条)
@android:style/Widget.ProgressBar.Large.Inverse(大环形进度条)
@android:style/Widget.ProgressBar.Small(小环形进度条)
@android:style/Widget.ProgressBar.Small.Inverse(小环形进度条)
常用方法:setProgress(int ):设置进度的完成百分比;incrementProgressBy(int):设置进度条的进度增加或减少。参数为正→增加,参数为负→减少。
显示在标题上的进度条:调用Activity的requestWindowFeature()方法,传入
Window.FEATURE_INDETERMINATE_PROCESS在窗口白提上显示不带进度的进度条,传入Window.FEATURE _PROCESS则显示带进度的进度条。调用Activity的setProgress
-BarVisibility(boolean)或setProgressBarIndeterminateVisibility(boolean)方法即可控制进度条的显示和隐藏。
B. 拖动条(SeekBar)的功能和用法:进度条采用颜色填充来表明进度完成的程度,而拖动条则通过滑块的位置来标示数值,并且允许用户拖动滑块来改变值。滑块外观通过如下属性来指定。android:thumb: 指定一个Drawable 对象,该对象作为自定义滑块。为它绑定一个OnSeekBarChangeListener监听器以响应滑块位置的改变。
C. 星级评分条(RatingBar)的功能和用法:
它和拖动条有共同的父类:AbsSeekBar,而RatingBar通过星星来表示进度。通过绑定OnRatingBarChangeListener监听器,来响应星级评分条的改动。
UI组件之ViewAnimator及其子类
A. ViewAnimator是一个基类,继承了FrameLayout,因此它表现出FrameLayout的特征。可以将多个View组件叠在一起,在切换时表现出动画效果。
B. ViewSwitcher的功能和用法:每次只显示一个组件,支持切换时指定的动画效果。一般通过调用ViewSwitcher的setFactory(ViewSwitcher.ViewFactory)方法为之设置ViewFactory,并由该ViewFactory为之创建View即可。
C. 图像切换器(ImageSwitcher)的功能和用法:
继承了ViewSwitcher,因此具有和ViewSwitcher一样的特征;使用方法:为ImageSwitcher提供一个ViewFactory,该ViewFactory生成的View组件必须是ImageView。需要切换图片时,只要调用ImageSwitcher的setImageDrawable(Drawable drawable)、setImageResource(intresid)和setImageURI(Uri uri)方法切换图片即可。
D. 文本切换器(TextSwitcher)的功能和用法:
继承了ViewSwitcher,因此可以在切换View组件时使用动画效果。使用TextSwitcher也需要设置一个ViewFactory。与ImageSwitcher不同的是ViewFactory的makeView ()方法必须返回一个TextView组件。
E. ViewFlipper的功能与用法:
继承了ViewAnimator,可以调用addView(View v)添加多个组件,之后可以使用动画控制多个组件之间的切换效果。ViewFlipper需要开发者通过addView(View v)添加多个View。
各种杂项组件:
A. 日历视图(CalendarView)组件的功能和用法:
日历视图可用于显示和选择日期,用户既可以选择一个日期,也可以通过触摸来滚动日历。也可以调用CalendarView的setOnDateChangeListener()方法为此控件的点击事件添加事件监听器。
B. 日期、时间选择器(DatePicker和TimePicker)的功能和用法
DatePicker和TimePicker都是从FrameLayout派生而来,其中DatePicker 供用户选择日期;而TimePicker则供用户选择时间。
C. 数值选择器(NumberPicker)的功能和用法:
用于让用户输入数值,既可以输入也可以通过拖动来选择数值。如下三个方法:
setMinValue(int minVal):设置该组件支持的最小值
setMaxValue(int maxVal): 设置该组件支持的最大值
setValue(int value):设置该组件的当前值
D. 搜索框(SearchView)的功能和用法:
可以让用户在文本框中输入文字,并允许通过监听器监控用户输入,当用户提交搜索时,也可以通过监听器执行实际的搜索。
常用方法:
setconifiedByDedault(Boolean iconified):设置该搜索框默认是否自动缩小为图标。
setSubmitButtonEnabled(Boolean enabled):设置是否显示搜索按钮。
setQueryHint(CharSequence hint):设置搜索框内默认显示的提示文本。
setOnQueryTextListener(SearchView.OnQueryTextListener):为该搜索框设置事件监听器。
E. 选项卡(TabHost)的功能和用法
TabHost可以非常方便的在窗口上放置多个标签页,每个标签页相当于获得了一个与外部容器相同大小的组件摆放区域。通过这种方式,就可以在一个容器中放置更所组件。
F. 滚动视图(ScrollView)的功能和用法
用于为普通组件添加滚动条的组件。最多只能包含一个组件,而ScrollView的作用就是为该组件添加垂直滚动条。
G. Notification的功能和用法:
Notification是显示在手机状态栏的通知,代表的是一种具有全局效果的通知,一般通过NotificationManager服务来发送Notification。