前言
Android的UI开发采用两种方式:
- 1.编写XML;
- 2.纯代码编写
IOS的UI开发两种方式:
- 1.storyboard、XIB
- 2.纯代码编写
Android所有的UI组件底层都是继承于View,一些组件继承于ViewGroup的子类。Android在UI开发过程中采用的”组合器“设计模式进行UI的布局。 布局都是依靠一个UI容器(ViewGroup),在容器内添加UI组件的方式。
一、布局管理器
1.基本的管理器
布局管理器是继承于ViewGroup的子类,布局管理器主要用途:
- 容纳UI组件
- 调整UI组件的位置和大小
布局管理器的种类和简单介绍:
布局类型 | 布局名称 | 详细介绍 |
---|---|---|
constraintlayout | 约束布局 | 在Api9以上的Android系统,布局嵌套过多的问题,以灵活的方式定位和调整小部件 |
LInearLayout | 线性布局 | 行、列 模式的布局 |
TableLayout | 表格布局(继承LInearLayout) | 多个列 |
FrameLayout | 帧布局(继承ViewGroup) | 帧:多个UI控件在同一个位置的同时布局 |
RelativeLayout | 相对布局 | 相对:一个UI组件相对其他组件 |
GridLayout | 网格布局 | 把UI分成网格,对网格内在进行UI布局 |
AbsoluteLayout | 绝对布局 | 依靠的是绝对坐标的布局 |
每种布局管理器之间的继承关系:
2.AdapterView
AdapterView是一个重要的组件,它是一个抽象的基类,其子类在开发过程中非常常用。(就像IOS中的:UITableView、UICollectionView),接下来会介绍一下AdapterView及其子类的继承关系.
接下来详细介绍一下AdapterView子类中常用的几种子类。
UI组件 | 组件名称 | 介绍 |
---|---|---|
ListView | 列表视图 | 非常常用的组件,用于垂直列表的形式显示所有列表项(还要一个ListActivity可以直接使用) |
GridView | 网格视图 | 按照行、列的方式来显示多个组件 |
ExpandableListView | 可展开的列表组件 | 可以把列表项分为机组,每组又可包含多个列表项 |
Spinner 、Gallery | 列表选择框 | 一个列表选择框 |
AdapterViewFlipper | 显示上一个下一个图片,相机中显示图片 | |
StackView | 叠在一起显示View |
在上边AdapterView的子类过程中,需要使用大量数据Adapter 和 AdapterView对应相互绑定显示数据。
Adapter常用的实现类如下:
- ArrayAdapter:简单、易用的Adapter。常用于将数组或List集合的多个值包装成多个列表项
- SimpleAdapter:功能强大的Adapter,可用于将List集合的多个对象包装成多个列表项
- SimpleCursorAdapter: 和SimpleAdapter类似,只是用于包装Cursor提供的数据。
- BaseAdapter:通常用于被扩展。
以上仅简单介绍了AdapterList和Adapter之间的关系,具体的详细方法,可以参看Android开发文档。
二、UI组件
UI组件大体可以分为:图、文、控制器等。接下来简单讲述一下Android的系统组件中对应的图、文、控制器组件
1.TextView组件
TextView组件直接继承于View,是一个在界面显示文本类似于编译器(被阉割的<不能编辑>)的UI组件,但是TextView有丰富的子类,提供丰富多样的UI组件。
TextView及其常用子类的组件介绍
UI组件 | 组件名称 | 介绍 |
---|---|---|
TextView | 文本框 | 主要用于显示文字信息的UI组件,不能编辑(类似于IOS UILable) |
EditText | 编辑框 | 主要用于编辑输入,例如:账号、密码、验证码等 |
Button | 按钮 | 具有相应效果的 |
RadioButton | 单选按钮 | 字面意思就可以理解 |
CheckBox | 复选框 | 类上 |
ToggleButton | 状态开关按钮 | 类上 |
Switch | 开关 | 类上 |
TextView及其常用子类的继承关系如下所示:
TextView的详细方法,可以参看Android开发文档。
2.ImageView
ImageView继承于View组件,主要功能用于显示Image的组件。
UI 组件 | 组件名称 | 介绍 |
---|---|---|
ImageView | 图片显示器 | 用于显示Image、Drawable内容的UI组件 |
ImageButton | 图片按钮 | 显示图片的按钮 |
QuickContactBadge | 显示关联到特定联系人的图片 | |
ZoomButton | 缩放按钮 | 一个包含放大、缩小按钮的控件 |
ImageView及其常用子类的继承关系如下所示:
ImageView的详细方法,可以参看Android开发文档。
3.ProgressBar
ProgressBar是一个进度的组件,同样继承于View。主要用于描述进度的一个组件。接下来会介绍ProgressBar及其子类。
UI组件 | 组件名称 | 介绍 |
---|---|---|
ProgressBar | 进度条 | 加载过程中的进度条 |
SeekBar | 推动条 | 可以拖动的,播放器的进度 |
RatingBar | 星级评分条 |
ProgressBar及其子类的继承关系如下:
ProgressBar的详细方法,可以参看Android开发文档。
三、其他组件
1.ViewAnimator
ViewAnimation是一个基类,它继承了FrameLayout,所有它表现出FrameLayoutd的特征,同时在View切换时表现出动画效果。ViewAnimator的继承关系及其子类如下图所示:
ViewAnimator及其子类的介绍:
UI组件 | 组件名称 | 介绍 |
---|---|---|
ViewSwitcher | 视图切换组件 | 将多个View层叠在一起,每次显示一个组件,View切换过程中指定动画效果 |
ImageSwitcher | 图片切换组件 | 具有和ViewSwitcher相似的特征 |
TextSwitcher | 文本切换组件 | 具有和ViewSwitcher相似的特征 |
ViewFlipper | 切换视图组件 | 负责多个View的切换动画 |
ViewAnimation的详细方法,可以参看Android开发文档。
2.其他的UI组件
2.1 UI基础组件
UI组件 | 组件名称 | 介绍 |
---|---|---|
Toast | 提示消息框(带文字、图片信息) | Toast提示消息不会获得焦点,一段时间自动消失 |
CalenderView | 日历视图组件 | 用于显示和选择日期 |
DatePicker | 日期选择器 (FrameLayout的子类) | 用于选择日期 |
TimerPicker | 时间选择器 (FrameLayout的子类) | 用于选择时间 |
NumberPicker | 数值选择器 | 让用户输入数值:键盘输入和拖动选择 |
SearchView | 搜索框组件 | 用于文本框内输入文字,通过监听器监听用户输入内容,进行搜索 |
TabHost | 选择卡 | 可以方便的在窗口放置多个标签,每个标签获得一个和外部容器相同大小的组件摆放区域 |
ScrollView | 滚动视图 | 用于垂直、水平方向添加组件进行滚动的组件 |
Notification | 通知组件 | 一个具有全局效果的通知 |
AlertDialog | 提示对话框 | 功能最丰富、实际应用最广的对话框 |
ProgressDialog | 进度对话框 | 这个对话框只是对进度条的封装 |
DatePickerDialog | 日期选择对话框 | 对话框对DatePicker的封装 |
TimePickerDialog | 时间选择对话框 | 对TimePicker的封装 |
PopupWindow | 弹出窗口 | 弹出一个对话框的新组件 |
2.1 UI 菜单
UI组件 | 组件名称 | 介绍 |
---|---|---|
SubMenu | 子菜单 | 代表一个子菜单,包含1~N个MenuItem |
ContextMenu | 上下文菜单 | 代表一个上下文菜单,包含1~N个MenuItem |
PopupMenu | 弹出式菜单 | 弹会显示组件的下方或者上方 |
同时可以使用XML自定义Menu
2.1 UI 活动条(ActionBar)
ActionBar主要用于显示、隐藏ActionBar。可以实现Bar的导航等功能
总结
Android系统中系统自带的UI组件基本如上方列举的,可以基本了解可以使用的UI组件,更好的学习Android的UI布局,如果需要用户可以自定义新的UI组件,本文主要是列举Android中的UI组件和简单介绍。
持续更新中……