• 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五大布局介绍&属性设置大全>

  • 相关阅读:
    IntentService和AsyncTask的区别
    Android拒绝来电的实现ITelephony类的反射
    如何安全退出已调用多个Activity的Application?
    Android常用知识点总汇
    android menu的两种实现方法
    Android4.0系统接收不到广播的问题解析
    Android 面试题
    AsyncTask的用法
    select @@identity的用法
    按需操控Broadcast Receivers是否开启]
  • 原文地址:https://www.cnblogs.com/hzl6255/p/6696210.html
Copyright © 2020-2023  润新知