一、界面UI元素介绍

一个Android的应用是由一个或者多个Activity组成的。Activity是一个UI的容器,其本身并不在用户界面上显示出来。

在一个Android应用中,用户界面是由View 和ViewGroup对象构建的。View与ViewGroup都有很多种类,而它们都是View类的子类。

1、视图组件(View)

一个View在屏幕上占据了一块矩形区域,它负责渲染这块矩形区域(如颜色),也可以处理这块矩形区域发生的事件(如单击了这块区域),并可以设置这块区域是否可见,是否可以获取焦点等。

视图都由View类派生。

2、视图容器组件(Viewgroup)

一个Viewgroup对象是一个Android.view.Viewgroup的实例。

Viewgroup就是View的容器,负责对添加进来的View进行布局。

3、布局组件(Layout)

4、布局参数(LayoutParams)

假设在屏幕上的某个区域由一个Layout占据,那么如果想把一个View加入到这个区域,就必须告诉这个Layout加进来的View所占高、宽、方向等。这些高、宽、方向等信息就封装在一个LayoutParams中。

 

二、Android中应用界面布局

1、FrameLayout:

FrameLayout是框式布局。好比一块在屏幕上提前预定好的空白区域,然后可以填充一些元素到里面,比如一张图片。所有元素都被放置在FrameLayout区域最左上的位置,而且无法为这些元素指定一个确切位置,如果一个FrameLayout里面有多个子元素,那么后边的子元素的显示会重叠在前一个元素上。

2、LinerLayout:

LinerLayout是线性布局。将自己包含的子元素按照一个方向进行排列。方向有两种,水平或垂直。

Android:orientation=”vertical”或Android:orientation=”horizontal”

3、RelativeLayout:

RelativeLayout是相对布局。它里边的元素的位置是按照里面某元素的相对位置来计算的。出于性能上的考虑,对于相对布局的精确位置的计算值会执行一次,所以如果一个可视化组件B依赖于A,那么必须要让A出现在B的前面。

4、TableLayout

TableLayout是表格式布局。把包含的元素以行和列的形式进行排列。表格的列数为每一行的最大列数,单元格可以为空。

 

5、LayoutInflater

LayoutInflater用来将XML的布局文件编程一个View的类。因为出于性能上的考虑,从XML的布局文件生成一个View类这个过程是在应用的构建阶段完成的,而不是在应用的运行阶段完成的。

 

 

三、常用widget组件介绍

widget包含各种UI元素在应用程序的屏幕中使用。如按钮、列表框、进度条、图片显示等。

1、  按钮(Button):

<Button Android:id=”@+id/XXX”

/>

2、  文本框(TextView):

<TextView Android:id=” @+id/XXX”

/>

3、  编辑框(EditText):

<EditText Android:id=” @+id/XXX”

/>

 

4、  多项选择(CheckBox):

<CheckBox Android:id=” @+id/XXX”

/>

 

5、  单项选择(RadioGroup):

<RadioGroup Android:id=” @+id/XXX”

<RadioButton Android:id=” @+id/XXX”

/>

/>

 

6、  下拉列表(Spinner):

<Spinner Android:id=” @+id/XXX”

/>

 

7、  自动完成文本(AutoCompleteTextView):

<AutoCompleteTextView Android:id=” @+id/XXX”

/>

 

8、  日期选择器(DatePicker):

<DatePicker Android:id=” @+id/XXX”

/>

 

9、  时间选择器(TimePicker):

<TimePicker Android:id=” @+id/XXX”

/>

 

10、滚动视图(ScrollView):

<ScrollView Android:id=” @+id/XXX”

/>

 

11、进度条(ProgressBar):

<ProgressBar Android:id=” @+id/XXX”

/>

 

12、拖动调(SeekBar):

<SeekBar Android:id=” @+id/XXX”

/>

 

13、评分组件(RatingBar)

< RatingBar Android:id=” @+id/XXX”

/>

 

14、图片视图(ImageView):

< ImageView Android:id=” @+id/XXX”

/>

 

15、图片按钮(ImageButton):

< ImageButton Android:id=” @+id/XXX”

/>

 

16、切换图片(ImageSwitch&Gallery):

ImageSwitch是用来图片显示那块区域的控件。

<ImageSwitch Android:id=” @+id/XXX”

/>

 

Gallery是用来控制底下那个图标列表索引用的。

< Gallery Android:id=” @+id/XXX”

/>

 

17、网格视图(GridView):

< GridView Android:id=” @+id/XXX”

/>

 

18、标签(TabView): Android:id=””

<TabHost Android:id=” @+id/XXX”

<TabWidget Android:id=” @+id/XXX”

/>

/>

 

 

四、MENU介绍

菜单为展现应用程序功能和设置提供了一个可靠的界面。按下设备上的MENU键会调出最普通的应用程序菜单。然而,你也可以加入当用户长按一个项目时调出的上下文菜单。

菜单也是用视图层次进行构架的,但你不必自己定义这个架构。你只要为你的Activity定义onCreateOptionsMenu() 和 onCreateContextMenu() 回调方法,并声明你想要包含在菜单中的项目就行了。Android将为你的菜单自动创建视图层次,并在其中绘入你的菜单项。

菜单会自行处理它们的事件,所以你不必为你菜单中的项目注册事件侦听器。当你菜单中的一项被选定时,框架将自动调用 onOptionsItemSelected() 或 onContextItemSelected() 方法。

如同应用程序布局一样。你也可以在一个XML文件中定义你菜单中的项目。

资源定义示例:

<menu xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:id="@+id/new_game" 
          android:icon="@drawable/ic_new_game" 
          android:title="@string/new_game" /> 
    <item android:id="@+id/help" 
          android:icon="@drawable/ic_help" 
          android:title="@string/help" /> 
</menu>

Bundle类型:书中讲菜单的地方莫名其妙冒出这个数据类型的说明,那我也在这里记一下吧。Bundle是一个类型安全的容器,它的实现其实就是HashMap做了一层封装。对于HasnMap来讲,任何名值对都可以存进去,值可以是任何java对象。但是对于Bundle不是这样,同样是存的名值对,但是这个值只能是基本类型或基本类型的数组,如String、int、byte、boolean、char等。

 

 

五、列表控件(ListView)

让一个ListView显示出来需要3样东西:

1、ListView:需要被显示的列表。

2、Data:和ListView绑定的数据。

3、ListAdapter:是data和ListView的桥梁,起一个适配作用。

 

 

六、对话框(Dialog)

需要注意的是Dialog虽然可以在界面上显示,但并非继承于View。

类似Activity,Dialog也是有生命周期的,它的生命周期由Activity来维护。

如AlertDialog、ProgressDialog。

 

 

七、Toast和Notification轻量级的提醒用户

Toast:

这是一个无模式的小窗体,会将显示的信息显示在首页面中。

Notification:

通过这种方式可以使系统将一个图标在状态条上闪,让机器震动,发出声音等。