一、Android UI框架:【了解】
Android 中所有的 UI (用户界面)元素都是使用 View 和 ViewGroup 对象建立的, View 是一个可以将一些信息绘制在屏幕上并与用户产生交互的对象,而 ViewGroup 是一个包含多个的 View 和 ViewGroup 的容器,用来定义 UI 布局。
Android 提供了一系列的 View 和 ViewGroup 的子类,开发者可以灵活地组合使用它们来完成界面布局、界面元素绘制和用户交互等工作,同时,开发者还可以选择性地继承一些系统提供的 View ,来自定义 View ,把自己定义的界面元素显示给用户。
Android 使用 View 类作为界面开发的超类,所有的界面开发都与 View 有关。多个 View 是一个 ViewGroup ,但 ViewGroup 本身继承自 View ,所以, Android 界面由 View 和 ViewGroup 随意组合而成, Android 的界面开发其实就是对 View 及其各种子孙类做操作。
二、View和ViewGroup
Android 的 UI 开发使用层次模型来完成,一般都是在一个 ViewGroup 中嵌套多层 ViewGroup ,每一层中含有随意数目的 View 。我们可以将整个屏幕看做一个 ViewGroup ,它同时也是一个 View ,而在这个整体的 ViewGroup 之中,又有多个 ViewGroup 和 View ,每个 ViewGroup 中又可以有多个子 ViewGroup 和 View 。基本结构如下图 所示。
三、布局的介绍:【了解】
1、在4.0以前版本中一共有五种 布局,都是ViewGroup的子类。分别是AbsoluteLayout、RelativeLayout、LinearLayout、FrameLayout、TableLayout。 而TableLayout是LinearLayout的子类。(中文分别是:绝对布局、相对布局、线性布局、帧布局、表格布局)。
2、在2.2操作系统中将AbsoluteLayout过期。而目前FrameLayout、TableLayout也逐渐少用。
3、在4.0之后又新增GridLayout。(GridLayout最经典的案例是计算器界面)
总之,Android中一共有
六种布局 。目前推荐使用
RelativeLayout 、
LinearLayout、
GridLayout 三种布局。
四 、View类的常用xml属性:
(一)、类结构:
java.lang.Object
↳ android.view.View
(二)、View及其子元素常用属性:(各种布局及控件的共同属性)
android:id
android:background
android:onClick 为该控件的单击事件绑定监听器
android:padding 设置控件四周的填充区域
android:visibility 设置该控件是否可见(invisible/visible/gone)
android:alpha 设置该组件透明度
android:layout_height 子组件的布局高度
android:layout_width 子组件的布局宽度
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组件:
(一)、控件名称:【标红色的为常用的】
TextView 文本视图
EditText 文本编辑框
Button 按钮
ImageView 、Gallery 图像视图、画廊(建议过期)
ImageButton 图片按钮
ToggleButton 、Switch 开关按钮、开关
RadioButton 单选按钮
CheckBox 多选框
Spinner 下拉列表
AutoCompleteTextView 自动完成文本框
ProgressBar 进度条
Dialog(AlertDialog 、ProgressDialog 、TimePickerDialog、DatePickerDialog)提示对话框、进度对话框、时间选择对话框、日期选择对话框
ListView、 GridView 列表视图【最重要的UI组件 】、 网格视图
ExpandableListView 可展开列表视图
SearchView 搜索框
TabHost 书签选项卡
Notification 、Toast 通知 、 吐司(短时提醒)
Menu(OptionMenu /SubMenu、ContextMenu) 菜单(选项菜单、上下文菜单)
ImageSwitcher、TextSwitcher 、 ViewPager 图像切换器、文本切换器
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 的可选项:
android:inputType="textPersonName "
android:inputType="textPassword "
android:inputType="numberPassword " 只可以输入数字
android:inputType="textEmailAddress "
android:inputType="phone " 只允许输入数字,括号等特殊符号,不可以输入字母。
android:inputType="textPostalAddress "
android:inputType="time "
android:inputType="date "
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类结构:
java.lang.Object
↳ android.view.View
↳ android.widget.TextView
↳ android.widget.Button
所以Button继承了TextView的所有属性。
Button绑定监听的四种方式
(二)、 button按钮添加监听事件的步骤:
方式一:
1.在标签中添加OnClick属性 属性的值任意定义
2.在.java文件中定义与OnClick属性的值同名的方法 public void click(View v){}
方法的特点: 1)访问修饰符必须是public
2)返回值必须是void
3)方法的参数必须是唯一的View类型
4)方法名必须和OnClick的属性值完全相同
3.将点击按钮进行的操作放到当前方法中做
案例代码:
方式二:
1.在标签当中添加id属性
2..java文件中通过findviewById()获取当前的按钮对象
3.通过Button按钮对象setOnClickListener()设置单击事件监听器
监听器需要OnClickListener接口类型的对象 可以声明内部类实现这个接口重写OnClick()方法
当点击按钮时会回调OnClickListener的OnClick()方法
案例代码:
方式三:
1.在标签当中添加id属性
2..java文件中通过findviewById()获取当前的按钮对象
3.通过Button按钮对象setOnClickListener()设置单击事件监听器 采用匿名内部类的形式
案例代码:
方式四:
1.在标签当中添加id属性
2..java文件中通过findviewById()获取当前的按钮对象
3.当前的activity实现OnClickListener接口 重写OnClick()方法
4.按钮对象的setOnClickListener(this)设置单击事件监听器
案例代码: