Android Studio 开发完整教程
目录
-
(图片来源网络,侵删)- 1 什么是 Android?
- 2 什么是 Android Studio?
- 3 安装 Android Studio
- 4 配置 Android SDK
- 5 创建你的第一个项目:Hello World
- 6 认识 Android Studio 界面
-
- 1 应用四大核心组件简介
- 2 UI 布局:XML 与 ConstraintLayout
- 3 常用 UI 组件
- 4 使用布局预览器
- 5 实践:构建一个简单的登录界面
-
- 1 为什么是 Kotlin?(Java 的替代者)
- 2 Kotlin 基础语法速览
- 3 在 Activity 中处理用户点击事件
- 4 实践:让登录按钮动起来
-
- 1 使用
Intent在页面间跳转 - 2 使用
TextView显示动态数据 - 3 列表显示:
RecyclerView和Adapter - 4 实践:创建一个简单的任务列表
- 1 使用
-
(图片来源网络,侵删)- 1 应用图标与启动页
- 2 调试与日志
- 3 构建与生成 APK
- 4 后续学习方向
第一部分:环境准备与基础概念
1 什么是 Android?
Android 是一个由 Google 开发和主导的、基于 Linux 内核的开源移动操作系统,它被广泛用于智能手机、平板电脑、智能手表、电视等设备,作为开发者,我们使用 Android SDK (Software Development Kit) 来为这个平台创建应用程序。
2 什么是 Android Studio?
Android Studio 是 Google 官方推荐的、用于 Android 应用开发的集成开发环境,它集成了代码编辑、调试、性能分析、版本控制(Git)等一系列强大功能,是开发 Android App 的首选工具。
3 安装 Android Studio
- 下载:访问 Android Studio 官方下载页面。
- 选择系统:根据你的操作系统(Windows, macOS, Linux)下载对应的安装包。
- 安装:
- Windows:双击安装包,按照向导一步步操作,建议安装时勾选 "Android Virtual Device"(虚拟设备)。
- macOS:将下载的 DMG 文件拖拽到
Applications文件夹即可。
- 启动:安装完成后,启动 Android Studio。
4 配置 Android SDK
首次启动 Android Studio 时,它会引导你进行初始配置:
- Welcome 界面:选择 "Custom"(自定义)以进行更详细的配置。
- Settings 界面:
- Theme:选择你喜欢的主题(Darkest 或 Light)。
- SDK:这是最关键的一步,它会自动检测并下载最新的 Android SDK 和平台工具,如果网络较慢,这个过程可能需要一些时间,确保至少选择一个 Android 版本(如 Android 13.0 "Tiramisu")作为你的 Minimum SDK(最低兼容版本)。
- Emulator Setup:创建一个虚拟设备(模拟器),这样你就可以在电脑上直接运行和测试你的 App,选择一个设备型号(如 Pixel 6),选择一个系统镜像(建议下载推荐的系统版本),然后点击 "Finish"。
5 创建你的第一个项目:Hello World
- 启动 Android Studio,点击 "New Project"。
- 选择模板:对于初学者,选择 "Empty Views Activity" 然后点击 "Next"。
- 配置项目:
- Name:给你的应用起个名字,如 "MyFirstApp"。
- Package name:应用的唯一标识符,通常是反向域名格式,如
com.example.myfirstapp。不要轻易修改。 - Save location:选择项目保存的路径。
- Language:选择 Kotlin(强烈推荐)。
- Minimum SDK:选择你之前配置的最低版本。
- 点击 "Finish",Android Studio 会开始构建项目,这可能需要几分钟,耐心等待。
6 认识 Android Studio 界面
项目构建完成后,你会看到主界面,主要包含以下几个部分:

- 工具栏:包含运行、调试、Git 等常用操作。
- 导航栏:可以在项目文件、结构视图、设备日志之间切换。
- 编辑器窗口:这是你编写代码和设计 UI 的主要区域。
- 工具窗口栏:位于编辑器下方和右侧,包含:
- Logcat:显示应用的运行日志,是调试的利器。
- Build:显示项目的构建过程和错误信息。
- Device Manager:管理你的虚拟设备或已连接的实体设备。
第二部分:核心组件与 UI 设计
1 应用四大核心组件简介
一个 Android App 通常由以下四种组件构成:
- Activity:代表一个屏幕,一个 App 通常有多个 Activity,比如登录界面、主界面、设置界面等,我们目前看到的就是
MainActivity。 - Service:在后台执行长时间运行的任务,没有用户界面,比如播放音乐、下载文件。
- Broadcast Receiver:接收系统或 App 发送的广播消息,比如手机电量低、网络状态改变。
- Content Provider:管理应用的数据,并允许其他应用访问这些数据,比如联系人、相册数据。
2 UI 布局:XML 与 ConstraintLayout
应用的界面是通过 XML 文件来描述的,这些文件位于 app/res/layout/ 目录下。
- XML:一种标记语言,用来定义 UI 的结构和外观。
- ConstraintLayout:目前最推荐的布局方式,它允许你通过创建视图之间的约束关系来定位组件,非常适合构建复杂且灵活的界面,可以有效减少布局的嵌套层级,提高性能。
3 常用 UI 组件
在 app/res/layout/activity_main.xml 文件中,你会看到类似这样的代码:
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Hello World!"
tools:context=".MainActivity" />
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click Me" />
- TextView:用于显示文本。
- Button:一个可点击的按钮。
- EditText:用于用户输入文本。
- ImageView:用于显示图片。
4 使用布局预览器
在 activity_main.xml 文件的右上角,有三个标签:
- Split:代码和预览视图同时显示,最常用。
- Code:只显示代码。
- Design:可视化拖拽设计界面(不推荐初学者使用,因为手动编写 XML 更能理解布局原理)。
5 实践:构建一个简单的登录界面
- 打开
app/res/layout/activity_main.xml。 - 删除默认的
TextView和Button。 - 从左侧的 "Palette"(调色板)中拖拽以下组件到画布上:
- 一个
TextView,修改text属性为 "用户名:"。 - 一个
EditText,修改id为@+id/et_username,hint属性为 "请输入用户名"。 - 一个
TextView,修改text属性为 "密码:"。 - 一个
EditText,修改id为@+id/et_password,inputType属性为textPassword(这样输入的内容会显示为点)。 - 一个
Button,修改id为@+id/btn_login,text属性为 "登录"。
- 一个
- 使用 ConstraintLayout 的约束,让这些组件水平居中并垂直排列,你可以直接在预览图上拖拽组件的锚点(小圆点)到父布局的边缘或另一个组件上,或者手动编写 XML 代码。
- 最终的
activity_main.xml应该看起来像这样:<androidx.constraintlayout.widget.ConstraintLayout ...> <TextView android:id="@+id/tv_username" ... /> <EditText android:id="@+id/et_username" ... /> <TextView android:id="@+id/tv_password" ... /> <EditText android:id="@+id/et_password" ... /> <Button android:id="@+id/btn_login" ... /> </androidx.constraintlayout.widget.ConstraintLayout>
第三部分:交互与逻辑 - Kotlin 编程基础
1 为什么是 Kotlin?
Kotlin 是 Google 推荐的 Android 开发首选语言,它是现代、简洁、安全的编程语言,与 100% 兼容 Java,可以无缝调用 Java 代码,相比 Java,Kotlin 代码更简洁,空指针更安全。
2 Kotlin 基础语法速览
- 变量:
val:不可变变量(类似 Java 的final)。var:可变变量。val name: String = "Alice"var age: Int = 30
- 函数:
fun sayHello(name: String): String { return "Hello, $name!" } - 空安全:Kotlin 区分可空和不可空类型。
String不能为空,String?可以为空。val name: String? = null // 必须处理可能为 null 的情况 val length = name?.length // name 为 null,则 length 也为 null
3 在 Activity 中处理用户点击事件
现在我们要让登录按钮点击后执行一些操作。
- 打开
app/java/com/example/myfirstapp/MainActivity.kt。 - 我们需要在
onCreate方法中获取 UI 组件的引用,使用findViewById或更现代的ViewBinding(这里先用findViewById简化)。 - 然后为按钮设置一个点击监听器。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main) // 加载布局文件
// 1. 获取按钮的引用
val loginButton: Button = findViewById(R.id.btn_login)
// 2. 设置点击监听器
loginButton.setOnClickListener {
// 当按钮被点击时,这里的代码会执行
Toast.makeText(this, "登录按钮被点击了!", Toast.LENGTH_SHORT).show()
}
}
}
findViewById(R.id.btn_login):通过在 XML 中定义的id来找到对应的 UI 组件。setOnClickListener:设置一个监听器,当用户点击该视图时,会执行 中的代码块(Lambda 表达式)。Toast.makeText(...).show():弹出一个简小的提示框。
4 实践:让登录按钮动起来
修改上面的 setOnClickListener,让它获取用户名和密码并显示出来。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val loginButton: Button = findViewById(R.id.btn_login)
val usernameEditText: EditText = findViewById(R.id.et_username)
val passwordEditText: EditText = findViewById(R.id.et_password)
loginButton.setOnClickListener {
val username = usernameEditText.text.toString()
val password = passwordEditText.text.toString()
if (username.isEmpty() || password.isEmpty()) {
Toast.makeText(this, "用户名和密码不能为空!", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this, "用户名: $username, 密码: $password", Toast.LENGTH_LONG).show()
}
}
}
}
usernameEditText.text.toString():获取EditText中的文本并转换为字符串。
第四部分:数据存储与列表显示
1 使用 Intent 在页面间跳转
Intent 是 Android 中不同组件之间通信的“信使”,我们可以用它来启动一个新的 Activity。
-
在 Android Studio 中,右键点击
app/java/com/example/myfirstapp包 -> New -> Activity -> Empty Views Activity,命名为WelcomeActivity。 -
打开
WelcomeActivity.kt,修改onCreate方法:class WelcomeActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_welcome) // Android Studio 会自动创建这个布局文件 // 获取从 MainActivity 传递过来的用户名 val username = intent.getStringExtra("USERNAME") val welcomeText: TextView = findViewById(R.id.welcomeTextView) welcomeText.text = "欢迎, $username!" } } -
修改
activity_welcome.xml,添加一个TextView并设置id为@+id/welcomeTextView。 -
修改
MainActivity.kt中的点击事件,使用Intent跳转:// 在 MainActivity.kt 中 loginButton.setOnClickListener { val username = usernameEditText.text.toString() val password = passwordEditText.text.toString() if (username.isEmpty() || password.isEmpty()) { Toast.makeText(this, "用户名和密码不能为空!", Toast.LENGTH_SHORT).show() } else { // 创建一个 Intent,从当前 Activity 指向 WelcomeActivity val intent = Intent(this, WelcomeActivity::class.java) // 使用 putExtra 传递数据 intent.putExtra("USERNAME", username) // 启动新的 Activity startActivity(intent) } }
2 使用 TextView 显示动态数据
这在上一节的 WelcomeActivity 中已经展示了,通过 intent.getStringExtra() 获取数据,然后使用 findViewById 找到 TextView,并调用 text 属性来设置内容。
3 列表显示:RecyclerView 和 `Adapter
当需要显示一个可滚动的列表时,RecyclerView 是最佳选择。
- RecyclerView:一个高效的滚动容器,它只渲染当前屏幕可见的项,大大提升了性能。
- Adapter:连接数据源(如一个 List)和
RecyclerView的桥梁,它负责将数据列表中的每一项“适配”成列表中的一个列表项(View)。
4 实践:创建一个简单的任务列表
-
准备数据:在
MainActivity.kt中创建一个任务列表。val taskList = mutableListOf("学习 Android", "去健身", "买菜做饭") -
添加 RecyclerView:在
activity_main.xml中添加一个RecyclerView。<androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerView" android:layout_width="match_parent" android:layout_height="match_parent" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" /> -
创建列表项布局:右键点击
app/res/layout-> New -> Layout Resource File,命名为item_task.xml,设计一个简单的布局,包含一个TextView。 -
创建 Adapter:
-
右键点击包名 -> New -> Kotlin Class/File,选择
Class,命名为TaskAdapter。 -
代码结构如下:
class TaskAdapter(private val taskList: List<String>) : RecyclerView.Adapter<TaskAdapter.TaskViewHolder>() { // 定义一个 ViewHolder,用来缓存每个列表项的 View class TaskViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { val taskTextView: TextView = itemView.findViewById(R.id.taskTextView) } // 创建 ViewHolder override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TaskViewHolder { val view = LayoutInflater.from(parent.context).inflate(R.layout.item_task, parent, false) return TaskViewHolder(view) } // 绑定数据到 ViewHolder override fun onBindViewHolder(holder: TaskViewHolder, position: Int) { holder.taskTextView.text = taskList[position] } // 返回列表项总数 override fun getItemCount() = taskList.size }
-
-
在 Activity 中使用 Adapter:
// 在 MainActivity.kt 的 onCreate 方法中 val recyclerView: RecyclerView = findViewById(R.id.recyclerView) val layoutManager = LinearLayoutManager(this) // 设置线性布局管理器 recyclerView.layoutManager = layoutManager val adapter = TaskAdapter(taskList) recyclerView.adapter = adapter
第五部分:项目进阶与发布
1 应用图标与启动页
- 应用图标:替换
app/src/main/res/mipmap-*/ic_launcher.png。 - 启动页:在
res/drawable中创建splash_screen.xml,然后在AndroidManifest.xml中为你的主 Activity 设置android:windowBackground属性。
2 调试与日志
- 断点调试:在代码行号左侧点击,设置断点,然后点击 "Debug" 按钮(小虫子图标),程序会运行到断点处暂停,你可以查看变量值,单步执行代码。
- Logcat:这是最重要的调试工具,你可以通过标签(TAG)、日志级别(Verbose, Debug, Info, Warn, Error)来筛选日志。
Log.d("MyTag", "This is a debug message")。
3 构建与生成 APK
- 点击顶部菜单
Build->Build Bundle(s) / APK(s)->Build APK(s)。 - 构建完成后,Android Studio 会提示你 APK 文件的位置,这个
.apk文件可以直接安装到 Android 设备或模拟器上。
4 后续学习方向
恭喜!你已经掌握了 Android 开发的基础,接下来可以探索:
- MVVM 架构:学习更现代的应用架构,分离 UI 和业务逻辑。
- Room 数据库:在本地持久化存储数据。
- 网络请求:使用 Retrofit 和 OkHttp 从服务器获取数据。
- 依赖注入:学习 Hilt 或 Dagger 来管理对象的生命周期。
- Jetpack Compose:Google 推出的现代 UI 工具包,使用声明式 UI 编程,是未来的趋势。
这份教程为你打下了坚实的基础,最重要的是多动手实践,遇到问题多查阅官方文档和 Stack Overflow,祝你开发愉快!
