跳到主要内容
SUN / 笔记
← 全部文章

基础知识

在 Android 开发中,理解项目的整体框架是非常重要的,它帮助你更清晰地构建和组织应用。以下是一个典型 Android 项目的 结构和组件,我将按层次和模块进行解释,以帮助你更好地理解 Android 项目的框架。

1. Android 项目结构

一个标准的 Android 项目通常包括以下主要目录和文件:

text
ProjectName/
│
├── app/                   # 应用的主要代码和资源文件
│   ├── src/               # Kotlin 代码和资源
│   │   ├── main/
│   │   │   ├── java/      # Kotlin 代码文件
│   │   │   ├── res/       # 资源文件 (如布局、字符串、图像等)
│   │   │   ├── assets/    # 本地文件资源
│   │   │   └── AndroidManifest.xml   # 配置文件
│   ├── build.gradle       # 模块级构建文件
│
├── build.gradle           # 项目级构建文件
└── settings.gradle        # 项目设置文件

1.1 重要文件和文件夹

  • src/main/java/:存放 Kotlin 或 Java 代码。包括 Activity、Fragment、ViewModel、Repository、Service 等类文件。
  • src/main/res/:存放资源文件,包括:
    • layout/:布局文件(activity_main.xml、fragment_layout.xml 等)。
    • drawable/:存放图像、图标等(.png、.xml 等)。
    • values/:存放字符串、颜色、尺寸、样式等。
    • mipmap/:用于存放应用的图标。
  • AndroidManifest.xml:描述应用的基本信息,声明活动(Activity)、服务(Service)、权限等。
  • build.gradle:定义了构建设置、插件、依赖项等。

2. 核心组件

Android 应用由几个核心组件组成,这些组件是构建 Android 应用的基本单元。主要包括:

2.1 Activity

  • Activity 是用户界面(UI)的主要组件,负责处理用户交互和界面展示。
  • 一个应用至少有一个 Activity,通常是 MainActivity,它是应用的启动点。
  • 每个 Activity 都有一个独立的生命周期(如 onCreate()、onStart()、onPause() 等),你可以重写这些方法来管理其生命周期。

2.2 Fragment

  • Fragment 是可以嵌入到 Activity 中的 UI 组件,通常用于实现界面的模块化和复用。
  • Fragment 没有独立的生命周期,它与宿主的 Activity 紧密关联。

2.3 Service

  • Service 是一个在后台运行的组件,可以用来执行长期操作,如音乐播放、文件下载等。
  • Service 不与用户界面直接交互,可以在后台独立运行。

2.4 Broadcast Receiver

  • Broadcast Receiver 用于接收和处理系统或应用广播消息(如电池电量变化、网络状态变化等)。
  • 它通过 Intent 接收广播消息并执行相应的操作。

2.5 Content Provider

  • Content Provider 允许不同应用之间共享数据。它通过 URI 提供数据访问接口。

3. 架构设计

在 Android 开发中,通常采用一些架构模式来组织代码,以便更好地管理复杂的应用逻辑。以下是几种常见的架构设计模式:

3.1 MVC(Model-View-Controller)

  • Model:负责应用的业务逻辑和数据管理。
  • View:负责显示界面,接收用户输入。
  • Controller:作为 Model 和 View 的中介,处理用户的输入并更新 View。

这种模式较为简单,但难以扩展和管理大型项目。

3.2 MVVM(Model-View-ViewModel)

  • Model:包含数据和业务逻辑。
  • View:负责显示 UI。
  • ViewModel:负责从 Model 获取数据并通过 LiveData 绑定到 View,管理 UI 相关的数据处理。

MVVM 是当前 Android 开发中常用的架构模式,尤其是在使用 Jetpack 组件时。

3.3 使用 Jetpack 组件

Android Jetpack 是 Google 推出的一个开发库集合,它提供了许多组件来简化 Android 应用的开发。常见的 Jetpack 组件包括:

  • LiveData:用于数据的生命周期感知。
  • ViewModel:帮助管理 UI 数据并处理生命周期。
  • Room:本地数据库库。
  • Navigation:简化 Fragment 之间的导航。
  • WorkManager:管理后台任务。

这些组件有助于你更好地实现 MVVM 架构模式,提升代码的可维护性和可测试性。


4. 资源管理

在 Android 中,资源(如布局、字符串、图片等)是通过 res 文件夹来管理的。你可以通过 R 类来引用这些资源。例如:

  • 布局:R.layout.activity_main
  • 字符串:R.string.app_name
  • 颜色:R.color.colorPrimary

4.1 AndroidManifest.xml

这个文件是每个 Android 项目中必不可少的,它定义了应用的基本信息,包括:

  • 包名。
  • 应用的主题、权限等。
  • Activity、Service、BroadcastReceiver、ContentProvider 等组件。

4.2 配置文件

  • res/values/strings.xml:存放所有的字符串资源。
  • res/values/colors.xml:存放颜色值。
  • res/values/styles.xml:定义应用的主题和样式。

这些文件帮助你将资源与代码分离,使得应用更易于维护和本地化。


5. Gradle 构建系统

Gradle 是 Android 的构建工具,它基于 Groovy 脚本工作,用于编译和打包项目。每个 Android 项目通常会有两个 build.gradle 文件:

  • 项目级 build.gradle:定义项目的配置,如 Gradle 插件版本、依赖项等。
  • 模块级 build.gradle:定义该模块(通常是 app 模块)的构建配置、依赖项、签名等。

你可以在模块级 build.gradle 中添加各种 依赖项,如第三方库、AndroidX 库等。


6. 常见开发模式

  • 单 Activity 模式:应用只有一个 Activity,其他的屏幕通过 Fragment 来展示。
  • 多 Activity 模式:每个屏幕对应一个 Activity,通过 Intent 切换。
  • Service 模式:使用 Service 来处理后台任务,如音乐播放、文件下载等。

7. 项目启动流程

  1. AndroidManifest.xml 定义了应用的入口 Activity。
  2. 系统根据 Manifest 文件启动应用的 MainActivity,并触发 onCreate() 等生命周期方法。
  3. 用户的操作(如点击按钮)通过 Intent 启动其他 Activity 或组件。

总结

Android 项目的整体框架由多个组件组成,包括 Activity、Fragment、Service、Broadcast Receiver 和 Content Provider 等。同时,通过合理的架构设计(如 MVVM)和使用 Jetpack 组件,你可以构建更清晰、模块化和易于维护的应用。

随着你深入学习,你会对项目的组织、架构设计和各个组件的交互有更深入的理解。建议你多做一些实际的项目,以加深对 Android 项目结构的掌握。

Android项目的drawable文件夹用于保存App中用到的图片或图标。可以从网上找到各种图片(.jpg或.png),直接将其复制到此文件夹中,即可供App所使用。

复制到drawable文件夹下的图片,拥有一个(资源)标识值,其格式为:R.drawable.图片文件名

放在drawable中的图片文件,其名字中不要有汉字或空格等字符,应该采用全英文小写字母作为文件名。

(插图未导入)

将ImageView控件从面板中拖到组件树或设计面板中,两种方法均可以向布局文件中添加ImageView控件。

(插图未导入)

添加一个ImageView到界面上,将会弹出一个“Pick a Resource”对话框,在这里可以选择项目中的现有图片,特别地,可以使用Android预置的“Sample data”,这些图标和图片可以在设计时使用。

通过设置ImageView控件的srcCompat属性,可以让其(运行时)显示特定的图片。

相关文章

AndroidStudio使用教程(第六弹) →AndroidRuntime_ART与Dalvik →1.系统架构 →