1、界面编程与视图组件
1)视图组件与容器组件
- UI组件都在android.widget与android.view包及子包中。
- UI组件都继承了view类,view组件类似swing中jpanel,代表一个空白的矩形区域。
- ViewGroup通常作为容器使用
- 采用组合器设计模式设计view,viewGroup
2)使用XML布局文件控制UI界面
在res/layout目录下定义xml布局后,R.java会自动收录该布局资源。可以通过setContentView(R.layout.资源文件名字)显示视图到Activity中。
可以通过findViewById(R.id.<android.id属性值>)访问指定的UI组件。
3)也可以完全采用代码控制UI界面,像swing一样
4)开发自定义View
其他UI组件也都是继承了View组件,然后在View组件提供的空白上绘制。
2、布局管理器
和Swing不同,android的布局管理器本身就是一个UI组件。都是ViewGroup的子类。
1)线性布局 ,LinearLayout
类似FlawLayout,不同的是线性布局不会换行。
2)表格布局,TableLayout
通过TableRow等组件控制表格的行列
3)帧布局,FrameLayout
类似CardLayout
4)相对布局,RelativeLayout
相对兄弟组件,父容器决定的。
5)绝对布局,AbsoluteLayout
类似AWT中的空布局,不提供布局控制,通过x,y 控制组件位置。
3、基本界面组件
1)文本框与编辑框
TextView直接继承View,还是EditText,Button的父类。类似JLable。也可以看成一个文本编辑框,关闭了文字编辑功能。
2)按钮与图片按钮
Button继承了TextView,ImageButton继承Button。触发OnClick事件。
3)使用9Patch图片作为按钮背景
定义图片缩放区域,用draw9patch工具制作。
4)单选按钮和复选框
RadioButton和CheckBox继承了Button按钮,比普通的按钮多了可选中功能。
5)状态开关,ToggleButton
常用于切换程序的某种状态
6)时钟,AnalogClock和DigitalClock
继承了TextView,但是显示的内容是当前时间。DigitalClock显示的是数字时钟,可以显示当前秒数,AnalogClock显示模拟,不会有秒数。
7)图像视图,ImageView
ImageView继承View,显示图片,和Drawable对象。
4、高级界面组件
1)自动完成文本框,AutoCompleteTextView
比普通编辑框多了一个功能,当 用户输入一定字符后,自动完成文本框会显示一个下拉菜单,供用户选择。
2)Spinner
就是一个列表选择框。相当于弹出一个菜单供用户选择。
3)日期,时间选择器,DatePicker,TimePicker
都是FrameLayout派生来的,DatePicker提供用户选择日期,TimePicker供用户选择时间。
4)进度条,ProgressBar
动态显示进度。
5)拖动条,SeekBar
允许用户拖动滑块改变值,比如调节音量。
6)星级评分条,RatingBar
与拖动条相似,允许用户拖动来改变进度,不同的是用星星来表示进度。
7)选项卡,TabHost
可以方便的在窗口防置多个标签页,每个标签页相当于获得了一个与外部容器相同大小组件摆放区域。
8)滚动视图,ScrollView
FrameLayout派生出,为普通组件添加滚动条的组件。垂直滚动条。
9)列表视图,ListView,ListActivity
ListView以垂直列表的形式显示所有列表选项。
10)可展开的列表组件,ExpandableListView
把应用中的列表项分为几组,每组又可包含多个列表项。
11)网格视图和图像切换器,(GridView和ImageSwitcher)
GridView用于用行列显示多个组件。
ImageSwitcher显示的图片切换时可以设置动画效果。
12)画廊视图,Gallery
和Spinner不同的是,显示的是一个水平的列表选择框,并且允许用户通过拖动来查看上一个,下一个列表项。
5、对话框
- AlertDialog:功能丰富,实际应用多
- ProgressDialog:进度对话框
- DatePickerDialog:日期选择对话框,对DatePicker的包装
- TimePickerDialog:时间选择对话框
1)PopupWindow
可以创建类似对话框风格的窗口。
6、消息提示
1)Toast显示提示信息框
显示简单提示信息,不会获得焦点,过段时间就自动消失。
2)Notification
显示在手机状态栏的消息。一般通过NotificationManager服务来发送Notification。
7、菜单
只有单击手机上的MENU键,系统才会 显示该应用关联的菜单。
1)选项菜单和子菜单,SubMenu
2)使用监听器监听菜单事件
重写onOptionsItemSelected(MenuItem item)方法为菜单单击事件,编写响应。
为不同的菜单分别绑定监听器setOnOptionsItemSelected