Android API Guide学习和 LinearLayout 布局及基本UI控件

一、Android UI框架:【了解】

        Android中所有的UI(用户界面)元素都是使用ViewViewGroup对象建立的,View是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象,而ViewGroup是一个包含多个的ViewViewGroup的容器,用来定义UI布局。

        Android提供了一系列的ViewViewGroup的子类,开发者可以灵活地组合使用它们来完成界面布局、界面元素绘制和用户交互等工作,同时,开发者还可以选择性地继承一些系统提供的View,来自定义View,把自己定义的界面元素显示给用户。

        Android使用View类作为界面开发的超类,所有的界面开发都与View有关。多个View是一个ViewGroup,但ViewGroup本身继承自View,所以,Android界面由ViewViewGroup随意组合而成,Android的界面开发其实就是对View及其各种子孙类做操作。


二、View和ViewGroup

   AndroidUI开发使用层次模型来完成,一般都是在一个ViewGroup中嵌套多层ViewGroup,每一层中含有随意数目的View。我们可以将整个屏幕看做一个ViewGroup,它同时也是一个View,而在这个整体的ViewGroup之中,又有多个ViewGroupView,每个ViewGroup中又可以有多个子ViewGroupView。基本结构如下图所示。



三、布局的介绍:【了解】 1、在4.0以前版本中一共有五种布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。 2、在2.2操作系统中将AbsoluteLayout过期。而目前FrameLayout、TableLayout也逐渐少用。 3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面) 总之,Android中一共有 六种布局。目前推荐使用 RelativeLayoutLinearLayout、 GridLayout三种布局。
四 、View类的常用xml属性: (一)、类结构: java.lang.Object    ↳  android.view.View
(二)、View及其子元素常用属性:(各种布局及控件的共同属性)
  1. android:id
  2. android:background 
  3. android:onClick     为该控件的单击事件绑定监听器
  4. android:padding    设置控件四周的填充区域
  5. android:visibility    设置该控件是否可见(invisible/visible/gone)
  6. android:alpha        设置该组件透明度
  7. android:layout_height      子组件的布局高度
  8. android:layout_width        子组件的布局宽度
  9. android:layout_margin     设置子组件的外边距

五、LinearLayout:【掌握 (一)、概念:线性布局控制其中的控件或组件横向或纵向排列。不线性布局布局中,每一行或每一列只能放一个控件。并且线性布局不会换行。当控件排列到窗体边缘,后面的控件就被隐藏,而不会显示出来。 线性布局的默认方向是水平方向(Horizontal)。
(二)、 LinearLayout的常用 属性: 1.android:orientation     定义布局内控件或组件的排列方式 可选项:vertical (所有控件竖直摆放)、 horizontal(所有控件水平摆放)
2.android:layout_width    定义控件的宽度 可选项:fill_parent / match_parent/ wrap_content/绝对数值 备注:fill_parent / match_parent的效果完全一致,都是填充整个父控件。但是自2.2版本开始推荐使用match_parent 。wrap_content指的是该控件的宽度正好包裹内容物。
3.android:layout_height    定义控件的高度 可选项:fill_parent / match_parent/ wrap_content/绝对数值 备注:fill_parent / match_parent的效果完全一致,都是高度填充整个父控件。wrap_content指的是该控件的高度正好包裹内容物。
4.android:id   设置控件的id。这样就可以在R.java中自动生成相应的值,在程序中通过findViewById就可以调用。 设置id的格式为:android:id = "@+id/id的名字"
5.android:background     设置控件的背景颜色或背景图片 例如:android:background="#ffffff"           android:background="@drawable/图片名称" 【备注:】 颜色有RGB颜色格式和ARGB格式。G R B是红绿蓝三原色。而ARGB是带alpha的三原色,即有透明度的三原色。 #FFFFFF 代表白色 #000000  黑色 #FFFFFFFF   完全不透明 #00FFFFFF   完全透明 #88FFFFFF   半透明
6.android:layout_weight    设置控件的权重。即各控件在水平或者垂直方向上平均分配。 备注:如果是水平方向设置权重,要将android:layout_width设置为0dp,如果是垂直方向上使用权重,要将android:layout_height设置为0dp。否则权重容易受到高度或宽度的干扰而出现偏差。
7.android:gravity   该属性用来控制该View的内容物的位置。 如果该属性是定义在布局节点中,则该布局中所有控件的位置都受到这个属性的控制。 如果该属性出现在Button、TextView、EditText等控件中,则用来控制这些控件上的文字的位置。 可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。 【备注:】本属性与android:layout_gravity不同。
8.android:layout_gravity   该属性用于设置控件相对于容器的对齐方式。 可选项有:top、bottom、left、right、center_vertical、fill_vertical 、 center、fill等等。 这些可选项中不是适用于每一种布局。在垂直线性布局中,android:gravity为bottom不起作用;而水平线性布局中,android:gravity为right不起作用。 【备注:】而本属性是android:layout_gravity属性,与 android:gravity 属性不同。
(三)、LinearLayout的特有属性:【重新归纳:去除公共属性后的 特有属性】 1、android: orientation    布局管理器内组件的排列方式 2、android: gravity    设置布局管理器内组件的对齐方式
(四)、 LinearLayout 子元素的特有属性: 1、android: layout_weight    子元素在 LinearLayout 中所占的权重 2、android: layout_gravity     子元素在 LinearLayout 中的对齐方式
四、Android UI控件及UI组件: (一)、控件名称:【标红色的为常用的】
  1. TextView        文本视图
  2. EditText         文本编辑框
  3. Button            按钮
  4. ImageView、Gallery   图像视图、画廊(建议过期)
  5. ImageButton    图片按钮
  6. ToggleButton 、Switch    开关按钮、开关
  7. RadioButton    单选按钮
  8. CheckBox       多选框
  9. Spinner           下拉列表
  10. AutoCompleteTextView   自动完成文本框
  11. ProgressBar    进度条
  12. Dialog(AlertDialogProgressDialog、TimePickerDialog、DatePickerDialog)提示对话框、进度对话框、时间选择对话框、日期选择对话框
  13. ListView、GridView        列表视图【最重要的UI组件】、 网格视图 
  14. ExpandableListView   可展开列表视图
  15. SearchView    搜索框
  16. TabHost         书签选项卡
  17. Notification 、Toast         通知 、 吐司(短时提醒)    
  18. Menu(OptionMenu /SubMenu、ContextMenu)    菜单(选项菜单、上下文菜单)
  19. ImageSwitcher、TextSwitcher   、   ViewPager 图像切换器、文本切换器
  20. ActionBar        动作导航条

五、基本控件:——TextView: (一)、TextView类结构: java.lang.Object    ↳ android.view.View     ↳ android.widget.TextView





(二)、TextView 常用属性: 1、andorid: text   设置文本的内容 2、 android: textColor     设置文本的颜色 3、 android: textSize       设置文本的字体大小(sp) 4、andorid:height          设置文本的高度,以像素为单位 5、 android:width            设置文本的宽度,以像素为单位 6、 android: inputType     设置文本的类型。例如是普通文本,还是email,password,数字等等。 7、 android:singleLine     设置文本是否是单行显示。 8、android: gravity     设置文本框内文本的对齐方式。可选项有:top、bottom、left、right、center、fill、center_vertical、center_horizontal、fill_horizontal等等。这些属性值也可以同时指定,各属性值之间用竖线隔开。例如 right| bottom 9、android: drawableLeft    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 10、android:drawableRight    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 11、android:drawableTop    用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 12、android:drawableBottom   用于在文本框左侧绘制图片。该属性值通过“@drawable/图片文件名”来设置。 13、android: autoLink   给指定的文本增加可单击的超链接。可选项为:none、web、email、phone、map和all。 14、android: hint    设置当文本框内文本内容为空时,默认显示的提示性文字。
【补充:】 1、android:textAllCaps="true"     设置所有字母都大小 2、android:ellipsize="end"           文字过长,设置省略号。可选项:start , end ,middle,marquee
  • android:ellipsize="start" 省略号在开头        
  • android:ellipsize="middle" 省略号在中间        
  • android:ellipsize="end" 省略号在结尾        
  • android:ellipsize="marquee" 跑马灯显示
       【备注:】要实现跑马灯效果。要同时具有以下属性。
  •     android:ellipsize="marquee" 
  •     android:singleLine="true"  
  •     android:focusable="true" 
  •     android:focusableInTouchMode="true" 
  •     android:marqueeRepeatLimit="marquee_forever"


六、基本控件:——EditText: (一)、 EditText 类结构: java.lang.Object    ↳ android.view.View     ↳ android.widget.TextView       ↳ android.widget.EditText
 所以 EditText 继承了TextView的所有属性。
(二)、android: inputType的可选项:
  1. android:inputType="textPersonName
  2. android:inputType="textPassword
  3. android:inputType="numberPassword"      只可以输入数字
  4. android:inputType="textEmailAddress
  5. android:inputType="phone"      只允许输入数字,括号等特殊符号,不可以输入字母。
  6. android:inputType="textPostalAddress"   
  7. android:inputType="time
  8. android:inputType="date
  9. android:inputType="number
(三)、android:imeOptions  设置软键盘的回车键的功能                    1. android:imeOptions  =“actionSearch”  搜索                    2 android:imeOptions  =“actionGo”   前往                    3. android:imeOptions  =“actionNext”   下一个                    4.android:imeOptions  =“actionDone”   完成
       绑定相应的监听如下所示:            
(三)、android:imeActionLabel 设置自定义回车键的按钮文本内容                                         android:imeActionLabel="@string/launch"                           七、基本控件:——Button: (一)、Button类结构: java.lang.Object    ↳ android.view.View      ↳ android.widget.TextView        ↳ android.widget.Button
 所以Button继承了TextView的所有属性。 Button绑定监听的四种方式  (二)、 button按钮添加监听事件的步骤: 方式一:    1.在