您是否曾经想构建一个 Android 应用程序但不知道从哪里开始?在本教程中,我将向您展示如何使用 Android Studio 构建您的第一个 Android 应用程序。
Android Studio 基于 IntelliJ ,这是由JetBrains开发的 IDE(集成开发环境) 。它非常强大,可以通过快捷方式、方法生成、自动代码重构、项目各个部分的直接链接、Javadoc 弹出窗口等帮助您管理开发工作流程。Google 为 Android 开发设计了 Android Studio,支持 XML(带有方便的所见即所得编辑器)和 Groovy(用于 Gradle 脚本)。它还提供了一个功能丰富的模拟器,您可以在其中将代码和资源更改推送到正在运行的应用程序,而无需重新启动它。
我们正在创建的应用程序不会做任何花哨的事情。它只是一个简单的“Hello, World”应用程序,当您单击按钮时会向您打招呼。这里的目的是让你的脚湿透,并帮助你开始而不会不知所措。
设置项目
在我们开始创建实际应用程序之前,您必须设置很多东西。第一步是下载并安装Android Studio。安装完成后运行程序,您将看到以下屏幕。单击新建项目按钮。
您现在将看到一个屏幕,左侧列出了不同的设备类型,右侧列出了一堆选项。右侧的选项实际上是活动模板,它们创建了一些样板代码供您快速入门。选择左侧的手机和平板电脑,右侧的空活动。之后,点击下一步按钮。选择Empty Activity将创建一个布局文件和一个空 Activity。
您将被要求在下一个屏幕上提供应用名称和包名称。我们将应用程序名称设置为Hello World并将包名称设置为com.tutsplus.helloworld。指定项目目录并选择 Kotlin 作为您的语言。
应用名称是用户在安装您的应用程序后将看到的名称。这对于多个应用程序可能是相同的。例如,多人可以创建一个计算器并将应用程序命名为 Calculator。另一方面,包名必须是唯一的,所以它的名字有点奇怪。包名中的com.tutsplus部分只是一种确保唯一性的简单方法,因为域名对于不同的组织和公司等都是唯一的。
Android SDK 正在持续开发中,每年都会发布一个新版本,其中包含各种改进和新功能。您可以在更高版本的 Android 中使用的一些工具和库在旧版本中不存在。Google 的支持库为旧版本的 Android 操作系统带来了一些新功能,例如材料设计元素。但是,支持库只能做这么多。
我们在这里将 API 级别设置为 21,在编写本教程时将覆盖大约 98% 的设备。您甚至可以降低以支持更多设备。现在单击Finish按钮,Android Studio 将为您设置好一切。这包括创建适当的目录和文件。
了解项目结构
正如我之前提到的,Android Studio 将根据您在上一节中提供的选项为您创建一堆文件和目录。
在左侧,您应该会看到目录树。这是您项目的核心,您可以在其中找到项目的文件和资产。您将花费大部分时间的文件夹是java和 res 。在java中,您可以找到用于添加功能的项目代码文件。在res中,您可以找到项目的其余资源,例如布局、值表、图像等。
我们将在这里修改的两个文件是:MainActivity.kt和activity_main.xml。MainActivity.kt文件应位于 app > java > com.tutsplus.helloworld > MainActivity.kt 下,如上 图所示。同样,activity_main.xml文件应该在app > res > layout > activity_main.xml下。前者将包含我们的编程逻辑,而后者将处理布局。
Android Studio 的右上角有一堆小按钮。这些按钮使您可以轻松访问重要功能,例如运行、调试、分析或停止应用程序。您还可以在此处找到设备管理器。它用于管理您的应用程序将运行的虚拟和物理设备。
创建应用布局
Android Studio 带有一个出色且对初学者友好的布局编辑器。刚开始时,您会发现使用编辑器创建布局比编写代码更容易。但是,我建议您开始直接使用布局文件中的 xml 代码,因为您会更加熟悉该工具。对于我们的第一个应用程序,我们将坚持使用可视化编辑器。
如果文件已经打开,请单击工作区中的activity_main.xml选项卡,或者通过转到项目窗口中的app > res > layout > activity_main.xml来打开它。
如果布局编辑器占用了更大的屏幕空间,那么使用布局编辑器会更容易。您可能希望通过单击工作区左边缘的“项目”选项卡来隐藏项目窗口。还要确保您选择了布局编辑器右上角可见的设计选项卡。这应该会为您提供类似于下图的内容。
现在,您会看到布局的两个不同表面。一个是设计视图,另一个是蓝图视图。设计视图让我们更容易看到我们的布局是什么样子。我发现蓝图视图在创建布局时更有帮助,因为它减少了不必要的混乱。除非您正在处理一些复杂的布局,否则您不会注意到太大的差异。
您可以单击图像中的浅蓝色按钮来选择设计表面。我们将为我们的教程将其设置为蓝图。您也可以按B键循环浏览所有选项。
布局应该已经有一个TextView
元素。如下图所示设置其属性值。该id
属性用于获取对我们代码中元素的引用。该gravity
属性已设置为center
将文本保持在中心。textSize
属性设置24sp
为。text
将属性的值更改为Hello, anonymous!
。这是用户首次打开应用程序时将看到的内容。此元素已被限制为父元素。
现在从调色板中拖动一个按钮和一个纯文本元素并设置它们的属性值,如下图所示。
我们将从 Button 开始并将其id
属性设置为 button。按钮的上边距和右边距分别设置为 40dp 和 16dp。右边距由layout_marginEnd
属性表示。该onClick
属性的值决定了单击按钮时将调用的函数。我们已将其设置为greetPeople
。不要担心值周围的红色轮廓。当我们稍后定义我们的函数时,这将消失。
对于纯文本元素,input
类型设置为textPersonName|textCapWords
。UsingtextCapWords
将告诉设备自动大写用户的名字和姓氏。按钮的上边距和左边距分别设置为 40dp 和 16dp。我们输入的结束(右边缘)被限制在按钮的开始(左边缘)。
布局中不同元素的实际尺寸和位置也取决于您要强制执行的约束。
单击布局编辑器中的代码选项卡,您将看到 Android Studio 已将我们的设计转换为以下 XML 代码。
<?xml version="1.0" encoding="utf-8"?> <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="https://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/main_layout" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <TextView android:id="@+id/greeting" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center" android:text="Hello, anonymous!" android:textSize="24sp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="40dp" android:layout_marginEnd="16dp" android:onClick="greetPeople" android:text="Greet Me" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> <EditText android:id="@+id/name" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="40dp" android:layout_marginEnd="16dp" android:ems="10" android:inputType="textPersonName|textCapWords" android:text="Name" app:layout_constraintEnd_toStartOf="@+id/button" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> </androidx.constraintlayout.widget.ConstraintLayout>
切换回Design选项卡并将表面从Blueprint更改为Design。您应该会看到类似于下图的内容。
编写代码
在上一节中,我们将onClick
按钮的属性值设置为greetPeople
。所以我们现在将定义一个greetPeople()
在MainActivity.kt文件中调用的函数。
该函数基本上将获得对文本输入和文本视图的引用。来自文本输入的值将连接到字符串 Hello 并作为值分配给文本视图。
fun greetPeople(view: View) { val personNameInput = findViewById<EditText>(R.id.name) val greetingTextBox = findViewById<TextView>(R.id.greeting) val personName = personNameInput.text.toString() val greetingString = "Hello, $personName!" greetingTextBox.text = greetingString }
您还必须为 做一些导入EditText
,TextView
并View
避免参考错误。MainActivity.kt文件的整个代码应如下所示。
package com.tutsplus.helloworld import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.EditText import android.widget.TextView class MainActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) } fun greetPeople(view: View) { val personNameInput = findViewById<EditText>(R.id.name) val greetingTextBox = findViewById<TextView>(R.id.greeting) val personName = personNameInput.text.toString() val greetingString = "Hello, $personName!" greetingTextBox.text = greetingString } }
运行安卓应用
现在是时候最终运行我们的应用程序了。您可以在虚拟设备上的模拟器中运行它,也可以将其安装在物理设备上。单击设备管理器下的创建设备按钮以创建您的虚拟设备。在下一个屏幕上选择一个设备名称。我继续使用 Pixel 2。如果需要,您可以使用其他东西。
单击下一步并安装系统映像。我在这里选择了 Android R。
创建虚拟设备需要一些时间。之后,您可以单击Run App按钮或按Shift + F10。该应用程序现在将在模拟器上运行。在文本输入中输入您的姓名,然后单击Greet Me。您应该得到类似于下图的内容,其中我并排包含了来自模拟器和物理设备的屏幕截图。
最后的想法
而已!我们在 Android Studio 中成功创建并运行了我们的第一个 Android 应用程序。您现在可以开始尝试布局或代码以进行微小的更改。这将帮助您更加熟悉 Android Studio 并学习一些新东西。例如,您可以尝试将按钮放在文本输入下方,或者添加一个新按钮来显示另一个问候语。
发表评论