Activity
activity概念
- 本质特性:Activity本质是一个继承自AppCompatActivity的普通Java类,通过继承获得窗口特性
- 界面表现:可视化的独立窗口,开发者在此区域内规范界面和控件摆放
public class MainActivity extends AppCompatActivity {
// 可视化的界面
// public class XxxActivity extends Activity{}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 设置内容视图
setContentView(R.layout.activity_main);
}
}
onCreate方法
- 执行时机:程序进入界面时立即调用,相当于Activity的入口方法
- 核心作用:完成界面初始化和设置工作,必须调用super.onCreate()
- 类比说明:类似Java程序的main方法,是Activity生命周期第一个执行的方法
setContentView方法
- 功能解析:设置当前Activity显示的内容视图
- 参数要求:接收int类型的布局资源ID(@LayoutRes注解)
- 典型调用:setContentView(R.layout.activity_main) 加载指定布局文件
R文件作用
- 生成机制:自动为每个资源文件按类别分配索引(build目录下自动生成)
- 文件特性:final类包含多个static final内部类,每个属性对应16进制资源ID
- 使用规范:禁止手动修改,通过R.类别名.资源名访问(如R.layout.activity_main)
- 索引原理:XML文件名转换为整型ID,建立资源文件与代码的桥梁
activity运行机制回顾
- 创建阶段:普通类继承AppCompatActivity获得窗口特性
- 加载阶段:onCreate()中通过setContentView()绑定布局
- 资源解析:R文件提供资源索引,系统根据ID查找对应XML布局
- 显示流程:布局文件内容被解析后渲染到Activity窗口
布局文件
示例文件:
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
- XML结构:Android布局文件采用XML格式编写,与Java代码风格完全不同
- 标签与属性:通过标签定义布局和控件,通过属性设置显示特征
- 缩进规则:标签内部使用缩进来表示布局层次结构,便于快速理解布局关系
文本模式与设计模式
-
文本模式:
- 特点:开发人员直接编写XML代码
- 优势:精确控制每个标签和属性
- 适用场景:需要精细调整布局时使用
-
设计模式:
- 特点:可视化拖拽控件进行布局
- 优势:直观快捷,可实时查看效果
- 适用场景:可在右侧面板直接修改控件属性值
-
模式选择:根据实际需求灵活选择,没有固定规则,某些复杂布局可能更适合设计模式
预览模式
- 实时预览:在文本模式下编写代码时,右侧可实时显示布局效果
- 修改验证:如修改TextView的android:text属性为"你好,兄弟",预览会立即更新
- 宽高属性:layout_width和layout_height属性控制控件尺寸,具体含义后续讲解
创建布局文件
- 文件位置:布局文件存放在res/layout目录下
- 创建方法:右键layout文件夹→New→Layout Resource File
- 命名规范:文件名全部小写
- 根布局设置:创建时可指定根布局类型
- 多布局支持:可创建多个布局文件对应不同Activity
当应用程序有多个activity文件,程序怎么知道先加载哪个activity文件呢,这就跟配置清单文件有关了
清单文件
- 必要性: Android应用程序中必须包含的配置文件,位于工程根目录(虽然在Android模式下显示为独立文件夹)
- 历史演变: 早期需要手动配置每个Activity,现在Android Studio会自动完成配置
- 读取机制: 安卓设备启动应用时首先读取该文件,确定应用的初始界面和基本配置
配置MainActivity
-
基本结构: 使用标签配置,通过android:name属性指定Activity类
-
Intent-filter作用:
- 启动界面指定: 通过
<action android:name="android.intent.action.MAIN"/>标记为应用入口 - 应用图标显示: 通过
<category android:name="android.intent.category.LAUNCHER"/>使应用出现在程序列表
- 启动界面指定: 通过
-
唯一性: 每个应用只能有一个Activity配置此intent-filter组合
-
启动流程:
- 设备读取Manifest文件确定启动Activity
- 执行该Activity的onCreate方法
- 通过setContentView加载布局文件(R.layout.activity_main)
- 显示对应界面内容