Activity、布局文件、清单文件

66 阅读4分钟

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)
    • 显示对应界面内容