Android Activity介绍

1. 介绍

本文介绍了Android四大组件之一的Activity

2. 生命周期

Activity的生命周期图如下所示

activity_lifecycle

Activity生命周期的几个过程如下:

1. 启动Activity:系统会先调用onCreate方法, 然后调用onStart方法, 最后调用onResume, Activity进入运行状态
2. 当前Activity被其他Activity覆盖其上或被锁屏: 系统会调用onPause方法, 暂停当前Activity的执行
3. 当前Activity由被覆盖状态回到前台或解锁屏: 系统会调用onResume方法, 再次进入运行状态
4. 当前Activity转到新的Activity界面或按Home键回到主屏, 自身退居后台: 系统会先调用onPause方法, 然后调用onStop方法, 进入停滞状态
5. 用户后退回到此Activity: 系统会先调用onRestart方法, 然后调用onStart方法, 最后调用onResume方法, 再次进入运行状态
6. 当前Activity处于被覆盖状态或者后台不可见状态, 即第2步和第4步, 系统内存不足, 杀死当前Activity, 而后用户退回当前Activity: 再次调用onCreate方法、onStart方法、onResume方法, 进入运行状态
7. 用户退出当前Activity: 系统先调用onPause方法, 然后调用onStop方法, 最后调用onDestory方法,结束当前Activity

更多信息, 参考<基础总结篇之一:Activity生命周期>

3. Activity布局

3.1 布局种类

Activity有如下布局
线性布局(LinearLayout)
表格布局(TableLayout)
相对布局(RelativeLayout)
绝对布局(AbsoluteLayout)   - Deprecated since API level 3
框架布局(FrameLayout)
网格布局(GridLayout)          - Added in API level 14
约束布局(ConstraintLayout)  - Added in API level 9

TIP: 这些布局都可以嵌套使用

3.2 基本属性

布局文件都有两个最基本的属性, 宽和高

android:layout_width       match_parent/wrap_content  --- 设置控件宽度
android:layout_height      match_parent/wrap_content  --- 设置控件高度

对于主布局文件, 通常设置为match_parent, 表示适应整个屏幕
注意:  Android 2.2 之前使用的是fill_parent, 如今google建议使用match_parent.

其他常用公共属性如下:

android:layout_gravity     bottom/center/...   --- 设置该控件相对与父控件的位置
android:layout_margin+方位  固定值px             --- 设置控件边缘相对父控件的边距
android:padding+方位         固定值px             --- 设置控件内容相对本控件边缘的边距
android:background         固定值                  --- 设置控件的背景

/* Android 4.2引入 */
android:layoutDirection inherit/locale   --- 设置组件的布局排列方向
android:textDirection   inherit/locale   --- 设置组件的文字排列方向
android:textAlignment   gravity/center   --- 设置文字的对齐方式

更多属性, 参考<Android layout属性大全>

3.3 线性布局

线性布局(LinearLayout)就是将各种控件按照行或者列依次进行排列

布局属性:

android:orientation       vertical/horizontal --- 设置布局的排列方向

控件属性:

android:gravity           bottom/center/...   --- 设置控件内容的位置
android:layout_weight Integer --- 设置控件所占空间的权重

实例请参考: <Activity线性布局和表格布局>, <android的布局-LinearLayout(线性布局)>

3.4 表格布局

表格布局(TableLayout)以行列的形式管理子控件, 每一行为一个TableRow的对象或者一个控件的对象
TableRow可以添加子控件, 每添加一个代表一列
TIP: 表格布局继承自线性布局

布局属性:

/* 列从0开始, 多个列的话用","分隔 */
android:collapseColumns --- 设置需要被隐藏的列
android:shrinkColumns   --- 设置允许被收缩的列
android:stretchColumns  --- 设置允许被拉伸的列

控件属性:

android:layout_column   --- 设置该控件在TableRow中所在列。
android:layout_span     --- 设置该控件所跨越的列数

实例请参考: <TableLayout(表格布局)>, <android的布局-TableLayout(表格布局)>

3.5 相对布局

相对布局(RelativeLayout)是一种以控件之间相对位置或相对父容器位置进行排列的布局方式.

控件属性:

/* 控件相对控件位置, 值是另外一个控件ID */
android:layout_above             --- 位于给定控件之上
android:layout_below             --- 位于给定控件之下

android:layout_toLeftOf          --- 位于给定控件左边
android:layout_toRightOf         --- 位于给定控件右边

android:layout_alignLeft         --- 左边与给定ID控件的左边对齐
android:layout_alignRight        --- 右边与给定ID控件的右边对齐
android:layout_alignTop          --- 上边与给定ID控件的上边对齐
android:layout_alignBottom       --- 底边与给定ID控件的底边对齐

android:layout_alignBaseline     --- 对齐到控件基准线

/* 控件相对父容器位置, 值是true或false */
android:layout_alignParentLeft   --- 相对于父靠左
android:layout_alignParentTop    --- 相对于父靠上
android:layout_alignParentRight  --- 相对于父靠右
android:layout_alignParentBottom --- 相对于父靠下

android:layout_centerInParent    --- 相对于父即垂直又水平居中
android:layout_centerHorizontal  --- 相对于父即水平居中
android:layout_centerVertical    --- 相对于父即处置居中

/* Android 4.2以上新属性, 值是另外一个控件ID */
android:layout_alignStart        --- 将控件对齐给定ID控件的头部
android:layout_alignEnd          --- 将控件对齐给定ID控件的尾部
android:layout_alignParentStart  --- 将控件对齐到父控件的头部
android:layout_alignParentEnd    --- 将控件对齐到父控件的尾部

更多信息, 参考<Android 相对布局>, <android的布局-RelativeLayout(相对布局)>

参考:
<GridLayout(网格布局)>
<FrameLayout(帧布局)>

<Android ConstraintLayout详解>
<
Android五大布局介绍&属性设置大全>

posted @ 2017-04-11 20:45  北落不吉  阅读(374)  评论(0编辑  收藏  举报