安卓移动应用开发基础教程
这份教程将带你从零开始,了解并掌握安卓应用开发的基本技能,我们将按照以下路径进行:

- 环境搭建 - 准备好你的开发工具。
- 核心概念 - 理解安卓应用的基本构成。
- 第一个应用 "Hello World" - 动手实践,创建并运行一个简单的应用。
- UI 设计 - 学习如何构建用户界面。
- 交互处理 - 让你的应用响应用户操作。
- 数据存储 - 学习如何在应用中保存数据。
- 项目实战:简易记事本 - 综合运用所学知识,开发一个小项目。
- 进阶与学习资源 - 了解下一步该学什么。
环境搭建
在开始编码之前,你需要准备好开发环境。
1 必备软件
-
JDK (Java Development Kit)
- 为什么需要? 安卓应用主要使用 Java 或 Kotlin 语言编写,JDK 是运行和开发 Java 程序的基础。
- 如何安装? 前往 Oracle 官网 下载并安装最新版的 JDK。
-
Android Studio
- 为什么需要? 这是谷歌官方推荐的安卓集成开发环境,它集成了代码编辑器、调试器、模拟器、性能分析工具等一切你需要的东西。
- 如何安装?
- 前往 Android Studio 官网 下载对应你操作系统的安装包。
- 运行安装程序,按照提示一步步完成安装,在安装过程中,它会自动检测你是否已安装 JDK,如果没有,它会引导你下载。
2 配置与验证
-
首次启动 Android Studio:首次启动时,它会让你选择一些初始配置,比如主题、是否导入设置等,按照默认选择即可。
-
安装 SDK (Software Development Kit):Android Studio 会引导你下载安卓软件开发包,你需要选择至少一个版本的安卓平台(建议选择一个较新的版本,如 Android 13 (Tiramisu) 或 Android 14 (Upside Down Cake))以及对应的 SDK Build-Tools。
-
创建虚拟设备 (AVD - Android Virtual Device):这是安卓模拟器,你可以在电脑上运行一个虚拟的手机来测试你的应用。
- 在 Android Studio 中,点击
Tools->AVD Manager。 - 点击
Create Virtual Device,选择一个设备型号(如 Pixel 4)。 - 选择一个系统镜像(如果没有下载,点击
Download下载一个)。 - 完成配置后,启动模拟器。
- 在 Android Studio 中,点击
-
验证环境:创建一个新项目,选择一个模板,然后点击运行按钮(绿色的三角 ▶️),如果模拟器成功启动并显示了你的应用,那么恭喜你,环境搭建成功了!
核心概念
理解安卓应用的基本构成是开发的第一步。
1 四大组件
安卓应用由四个核心组件构成,每个组件都有其独特的角色和生命周期。
-
Activity (活动)
- 作用:代表一个屏幕,用户看到的每一个界面都是一个 Activity,微信的聊天列表、聊天窗口、朋友圈都是不同的 Activity。
- 特点:有完整的生命周期(创建、暂停、停止、销毁等)。
-
Service (服务)
- 作用:在后台运行,没有用户界面,它用于执行长时间运行的操作,比如播放音乐、下载文件、网络请求等。
- 特点:即使用户离开了应用,Service 仍然可以继续运行。
-
Broadcast Receiver (广播接收器)
- 作用:是一个消息接收器,用于接收系统或其他应用发出的广播,它可以监听手机电量低、网络状态改变、系统开机等事件。
- 特点:被动响应,不能与用户交互。
-
Content Provider (内容提供者)
- 作用:用于管理和共享应用数据,它允许一个应用访问另一个应用的数据(如联系人、相册),同时保证数据的安全性。
- 特点:数据共享的标准接口。
入门重点:初学者主要专注于 Activity,因为它是用户交互的入口。
2 应用清单文件
AndroidManifest.xml 是应用的“身份证”和“配置中心”,它位于 app/src/main/ 目录下,它声明了应用的所有组件、权限、使用的 SDK 最低版本等信息。
<application>: 包含应用的所有组件声明。<activity>: 声明一个 Activity。<intent-filter>: 定义 Activity 可以响应的动作(当用户点击一个链接时,你的应用能否打开它)。
3 资源文件
安卓鼓励将代码和资源(如图片、文字、布局)分离,资源文件位于 app/src/main/res/ 目录下。
layout/: 存放 UI 布局文件(XML 格式)。drawable/: 存放图片资源。mipmap/: 存放应用图标。values/: 存放字符串、颜色、样式等。strings.xml: 存储所有文本,便于国际化。colors.xml: 定义颜色值。styles.xml: 定义样式和主题。
第一个应用 "Hello World"
让我们创建一个简单的应用,在屏幕上显示 "Hello World!"。
-
创建新项目:打开 Android Studio,选择
New Project->Empty Activity,然后点击Next。 -
配置项目:
- Name: 你的应用名称,如
MyFirstApp。 - Package name: 应用的唯一标识符,通常为反向域名格式,如
com.example.myfirstapp。 - Save location: 项目保存路径。
- Language: 选择 Kotlin(现代、推荐)或 Java。
- Minimum SDK: 选择你的应用支持的最低安卓版本。
- Name: 你的应用名称,如
-
点击
Finish,Android Studio 会为你生成一个项目模板。 -
修改界面文本:
- 在左侧的
Project视图中,找到app->res->layout->activity_main.xml。 - 双击打开这个文件,你会看到一个设计视图和代码视图。
- 在设计视图中,点击中间的 "Hello World!" 文本。
- 在右侧的
Attributes(属性)窗口中,找到text属性,将其修改为你想要的文字,你好,安卓!。 - 保存文件。
- 在左侧的
-
运行应用:
- 确保你的虚拟设备(AVD)正在运行。
- 点击工具栏上的绿色运行按钮 ▶️。
- 几秒钟后,你的应用就会在模拟器中启动,并显示你修改后的文字。
恭喜!你已经成功创建了你的第一个安卓应用!
UI 设计
安卓 UI 通常使用 XML 布局文件来定义,这种声明式的方式直观且易于维护。
1 常用布局
布局是视图的容器,用来组织控件的位置。
LinearLayout(线性布局):子元素垂直或水平排列。android:orientation="vertical"或"horizontal"。
ConstraintLayout(约束布局):现代安卓开发的首选,它通过定义视图之间的约束关系(如“这个按钮在文本的下方”)来定位,非常灵活,可以减少嵌套层级,提高性能。RelativeLayout(相对布局):通过相对于其他视图或父容器的位置来定位。FrameLayout(帧布局):最简单的布局,所有子元素都堆叠在左上角,通常用于显示单个项目,如一张图片。
2 常用控件
TextView: 用于显示文本。Button: 可点击的按钮。EditText: 用于用户输入文本。ImageView: 用于显示图片。RecyclerView: 用于高效地显示滚动列表(如联系人列表、新闻流)。
3 使用 ConstraintLayout
activity_main.xml 默认就是 ConstraintLayout。
- 如何添加约束?
- 在设计视图中,选中一个控件(如 Button)。
- 控件周围会出现圆圈,这些是“锚点”(Anchor)。
- 按住一个锚点,拖动到另一个控件或父容器的锚点上,就会创建一条约束线。
- 你可以在右侧的
Attributes->Constraints面板中精确调整约束。
交互处理
一个静态的应用没有意义,我们需要让它响应用户的操作。
1 事件监听器
最常见的事件就是点击事件,我们以 Button 为例,当用户点击 Button 时,让它改变 TextView 的内容。
-
打开
MainActivity.kt:这是你的主要 Activity 的代码文件。 -
编写代码:
import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Button import android.widget.TextView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) // 1. 关联 XML 布局文件 setContentView(R.layout.activity_main) // 2. 通过 ID 找到 UI 控件 val myButton: Button = findViewById(R.id.my_button) // 假设你在 XML 中给 Button 设置了 id="my_button" val myTextView: TextView = findViewById(R.id.my_text_view) // 假设你在 XML 中给 TextView 设置了 id="my_text_view" // 3. 为 Button 设置点击事件监听器 myButton.setOnClickListener { // 当按钮被点击时,这里的代码会被执行 myTextView.text = "按钮被点击了!" } } } -
在 XML 中添加 ID:回到
activity_main.xml,确保你的 Button 和 TextView 都有android:id属性。<TextView android:id="@+id/my_text_view" ... /> <Button android:id="@+id/my_button" ... />@+id/my_button中的 表示如果这个 ID 不存在,就创建它。
现在运行应用,点击按钮,你会发现 TextView 的文字发生了变化。
数据存储
应用需要数据来工作,安卓提供了多种数据存储方式。
1 SharedPreferences
最简单的存储方式,用于存储少量的键值对数据,比如用户的设置、登录状态等。
-
特点:轻量级,数据以 XML 文件形式存储。
-
示例:保存用户名。
// 保存数据 val sharedPreferences = getSharedPreferences("my_prefs", MODE_PRIVATE) val editor = sharedPreferences.edit() editor.putString("username", "张三") editor.apply() // 异步保存,推荐使用 // 读取数据 val username = sharedPreferences.getString("username", "默认用户") // "username" 不存在,则返回 "默认用户"
2 Room 数据库
当需要存储结构化的、大量的数据时(如笔记、联系人列表),Room 是最佳选择,它是一个 SQLite 数据库的封装层,提供了更现代的 API。
- 特点:强大、高效、支持事务。
- 使用步骤(简化):
- 添加依赖。
- 创建 Entity (数据表)。
- 创建 DAO (数据访问对象),定义数据库操作方法(增删改查)。
- 创建 Database (数据库类),将 Entity 和 DAO 关联起来。
- 在代码中通过
DatabaseBuilder获取数据库实例,然后使用 DAO 进行操作。
3 其他方式
- 文件存储:直接将数据写入文件。
- SQLite 数据库:Room 的底层,更底层但更灵活。
- 网络存储:将数据存储在服务器上。
项目实战:简易记事本
让我们综合运用以上知识,开发一个可以添加和显示笔记的简易记事本。
功能需求:
- 有一个输入框和一个“添加”按钮。
- 用户输入笔记内容,点击“添加”按钮后,笔记被添加到下方的列表中。
- 笔记列表使用
RecyclerView显示。
实现步骤:
-
项目结构:
activity_main.xml: 主界面布局,包含EditText,Button,RecyclerView。list_item_note.xml: 单个笔记项的布局,只包含一个TextView。Note.kt: 数据类,用于表示一条笔记。NoteAdapter.kt:RecyclerView的适配器,负责将数据列表渲染到界面上。NoteDao.kt: 数据访问对象,定义数据库操作。AppDatabase.kt: Room 数据库类。MainActivity.kt: 主 Activity,处理 UI 交互和数据库操作。
-
核心代码逻辑:
-
配置 Room: 在
build.gradle文件中添加 Room 依赖。 -
创建
Note数据类:@Entity(tableName = "notes") data class Note( @PrimaryKey(autoGenerate = true) val id: Int = 0, val content: String ) -
创建
NoteDao:@Dao interface NoteDao { @Insert suspend fun insert(note: Note) @Query("SELECT * FROM notes ORDER BY id DESC") fun getAllNotes(): LiveData<List<Note>> // 使用 LiveData,数据变化时会自动更新 UI } -
创建
AppDatabase:@Database(entities = [Note::class], version = 1) abstract class AppDatabase : RoomDatabase() { abstract fun noteDao(): NoteDao } -
创建
NoteAdapter: 继承RecyclerView.Adapter,实现onCreateViewHolder,onBindViewHolder,getItemCount方法,将Note对象的数据绑定到list_item_note.xml的TextView上。 -
在
MainActivity.kt中整合:- 初始化数据库和 DAO。
- 初始化
RecyclerView和NoteAdapter。 - 设置“添加”按钮的点击事件:从
EditText获取文本,创建Note对象,通过 DAO 插入数据库。 - 观察 DAO 返回的
LiveData,当数据变化时,通知Adapter更新列表。
-
这个项目会让你对数据流(UI -> 数据库 -> UI)有非常深刻的理解。
进阶与学习资源
当你掌握了基础后,可以探索以下领域:
- 导航组件: 管理多个 Activity/Fragment 之间的跳转,处理返回栈,是现代安卓应用的标准。
- 依赖注入: 使用 Hilt 或 Koin 等框架管理对象的生命周期,降低代码耦合度。
- 异步编程: 深入学习 Kotlin 的协程,处理网络请求和耗时任务,避免应用卡顿。
- Jetpack Compose: 谷歌推出的现代化 UI 工具包,使用声明式的 Kotlin 代码来构建 UI,是未来的趋势。
- 网络编程: 学习 Retrofit (网络请求库) 和 OkHttp (底层 HTTP 客户端)。
- 权限管理: 学习如何动态申请和管理应用权限。
推荐学习资源
- 官方文档: Android Developers - 最权威、最全面的资料。
- Codelabs: Android Codelabs - 官方提供的互动式编程教程。
- 书籍:
- 《Android编程权威指南》(Kotlin版)- 经典入门书籍。
- 《Android Jetpack开发实战》 - 深入讲解Jetpack组件。
- 社区:
- Stack Overflow: 解决编程问题的最佳去处。
- 掘金、CSDN、知乎: 中文技术社区,有很多优秀的博客和教程。
- B站: 大量免费的视频教程。
也是最重要的建议:多动手,多实践! 从模仿开始,然后尝试自己做一些小项目,遇到问题就去搜索和解决,安卓开发是一个广阔的领域,保持好奇心和学习的热情,你一定能成为一名优秀的安卓开发者,祝你学习愉快!
