Android - 入门指南






4.71/5 (115投票s)
涵盖 Android 应用程序开发的基础知识(您甚至不需要 Android 手机)。
引言
本教程是开发 Android 应用的起点。它将解释 Android SDK(软件开发工具包)的基本知识以及如何将其与 Eclipse 一起使用。要理解本教程,您无需具备任何 Java 编程知识,但了解面向对象编程的基础知识可能对您进一步编程有所帮助。本教程将向 Android 初学者介绍如何在 Eclipse 中创建 Android 项目、处理资源以及编写一些初始代码。
设置 Eclipse 和 Android SDK
如果您还没有用于开发 Android 应用的运行环境,请按照此 链接 处的说明进行操作。
提示: PATH 指的是 Path 环境变量。在 Windows 中,您可以在“控制面板/系统/高级系统设置/环境变量”下的下方列表框中找到它。您可以通过转到命令行并键入 java -version 来检查安装的 Java 版本。
开始吧
现在,我们来创建我们的第一个应用程序,它(一如既往)是一个“Hello World”应用程序。首先,启动 Eclipse。然后选择“文件/新建/项目”。在“新建项目”对话框中,选择“Android/Android 项目”并单击“下一步”。
在这里,您可以设置项目。首先,我们需要为项目命名,因此在名称框中键入“Hello World”。接下来,您必须选择要使用的 Android 版本。此处我们选择 2.2 版本。正如我们在最后一列中看到的,此 Android 版本需要 API 版本 8,因此我们在“最小 SDK 版本”框中键入“8”。此外,项目还需要一个应用程序名称。(请注意,此名称也用于代码中,因此名称不应包含空格)。通常,您会使用项目名称并删除所有空格(例如,此项目的“helloworld”)。接下来,您必须定义项目的包。我们将在此处使用“com.test.helloworld”(包可以分组多个类;有关更多信息,请参阅 此处)。最后,您需要为 Activity(一个应用可能包含多个 Activity;它们就像应用的一个部分/屏幕)命名。在此示例中,我们仅使用“HelloWorldApp”。
在最终启动我们的第一个项目之前,我们需要创建一个配置。此配置指定了应用将在何种情况下启动。例如,您可以控制模拟器/应用可以使用 mạng tốc độ。此外,您可以选择不同的模拟器来测试不同 Android 版本或不同屏幕尺寸下的应用。要创建配置,请转到“运行/运行配置”。现在,单击侧面的“Android Application”选项卡,然后单击选项卡上方的“新建”按钮。将新配置命名为“HelloWorldConfig”,并通过“浏览”按钮选择我们的项目。然后转到“目标”选项卡。在这里,您可以选择 mạng tốc độ 和将要使用的模拟器。
由于我们还没有创建模拟器,因此需要先进行此操作。单击自动控制以启用侧面的按钮,然后单击管理器按钮。在此处,单击右侧的新建按钮以创建新模拟器。在接下来的屏幕中,您可以为模拟器输入一个名称(我使用了“DefaultAndroidEmulator”)并指定详细信息(如 Android 版本、SD 卡大小等)。您可以通过硬件部分控制模拟器的每一个小细节。
完成此操作后,单击“创建 AVD”并关闭管理器窗口。现在,我们已成功创建了运行配置。单击“应用”并关闭配置。最后,运行您的第一个 Android 项目。
注意:模拟器启动可能需要一些时间,请耐心等待!此外,我已经裁剪了图像,以便您看不到键盘或方向键。
恭喜!您刚刚创建了您的第一个应用!
编码很有趣
设置好所有内容后,(终于)是时候真正开始编写代码了,因为我们都知道:编码很有趣!
但在我们实际深入 Java 代码之前,我们需要了解 Android 应用程序的结构。转到您的包浏览器并展开“Hello World”项目。您将看到五个文件夹和两个文件。让我们先从这两个文件之一开始,即 AndroidManifest 文件。此文件包含有关您项目的所有信息,例如图标、作者姓名。要打开它,请右键单击它并选择“打开方式/Android Manifest 编辑器”。在出现的选项卡中,您可以指定项目的包名称和版本。在底部,您会找到其他选项卡。我认为您会发现大多数设置都非常直观。注意某些属性前面的 @ 符号。这表示后面的字符串是对资源的引用。您可以在项目“res”文件夹中找到这些资源。展开它,您会注意到它有一些子文件夹。具体来说,res 文件夹可以包含七种类型的子文件夹:values、drawable、layout、animations、xml、styles 和 raw。
首先,让我们关注 values 文件夹。您可以在此处存储各种简单资源(如字符串、颜色、数字、尺寸、数组等)。默认情况下,您会在其中找到 strings.xml 文件。当您打开它时(右键单击,“打开方式/Android 布局编辑器”),您会看到它包含两个值。第一个是您运行项目时看到的 the message,第二个是您的应用名称。如果您想稍后在代码(或 Manifest 或布局文件中)中使用它们,可以添加新值。您还可以使用限定符创建特定资源。如果您在文件夹名称后添加“-”,则可以为名称添加限定符。例如,您可以将 values 文件夹重命名为 values-en,这意味着文件夹的内容仅供启用了英语的 Android 手机使用。如果您不添加限定符,则这些资源是默认的。如果找不到当前系统的特定资源,则会使用默认资源。项目启动时,所有资源都会尽可能高效地进行编译并添加到包中。此外,还会创建一个引用(称为 R),允许您在代码中访问这些资源。由于这只是一个教程,我不会在这里重点介绍所有类型的资源。您可以在 此处 找到有关资源和限定符的更多信息。
最后,是时候开始编码了!转到“src”文件夹。在该文件夹中,您会找到包文件夹,打开 HelloWorld.java 文件。您将看到 Android Activity 的默认代码。
package com.test.helloworld; //the package we are working in
//some android packages we need to import
import android.app.Activity;
import android.os.Bundle;
//our activity class (extendes the default activity class)
public class HelloWorldApp extends Activity {
/** Called when the activity is first created. */
@Override
//the function called when activity is created
public void onCreate(Bundle savedInstanceState) {
//call the create fct. Of the base class
super.onCreate(savedInstanceState);
//load the layout specified in the layout.xml
setContentView(R.layout.main);
}
}
正如您所见,我们通过扩展默认的 Android Activity 类来创建一个新的 Activity。然后我们重写默认的 onCreate
函数,该函数在创建项目时调用。在其中,我们从资源中加载自己的布局,并调用基类的 onCreate
函数。现在,让我们仔细看看布局文件。您可以在资源下的布局文件夹中找到它。打开它时,它应该如下所示:
<linearlayout android:layout_height="fill_parent"
android:layout_width="fill_parent" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" />
<textview android:layout_height="wrap_content"
android:layout_width="fill_parent" android:text="@string/hello" />
</linearlayout />
您看到根节点称为 LinearLayout
。正如您可能已经发现的那样,有不同类型的布局:
FrameLayout
:所有控件(子项)都放置在左上角。LinearLayout
:所有子项都按垂直/水平顺序排列。RelativeLayout
:子项的位置相对于其他子项进行指定。TableLayout
:子元素按网格放置。AbsoluteLayout
:子元素基于绝对坐标(以像素为单位)定位。
选择布局类型后,您可以添加子元素。在给出的代码中,已经有一个 TextView
,用于在屏幕上显示文本。当前内容是对 values.xml 文件中定义的资源的引用。正如您将看到的,它使用了整个屏幕宽度,但长度仅足够显示内容。我们可能从一些小改动开始。让我们将 TextView
的文本颜色更改为绿色。
<textview android:layout_height="wrap_content"
android:layout_width="fill_parent" android:text="@string/hello"
android:textcolor="#FF00FF00" />
现在,启动项目并查看更改。接下来,让我们添加一个名为 EditText
的新控件。
<linearlayout android:layout_height="fill_parent"
android:layout_width="fill_parent" android:orientation="vertical"
xmlns:android="http://schemas.android.com/apk/res/android" />
<edittext android:layout_height="wrap_content"
android:layout_width="fill_parent" android:textcolor="#FF0000FF"
android:id="@+id/et_Text" />
<textview android:layout_height="wrap_content" android:layout_width="fill_parent"
android:textcolor="#FF00FF00" android:id="@+id/lv_View" />
</linearlayout />
当我们想在代码中访问控件时,它们需要有一个 ID。接下来,我们为控件创建一些代码。转到 helloworld.java 文件。
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//loading the layout over the resource reference
setContentView(R.layout.main);
//get the two controls we created earlier, also with the resource reference and the id
final TextView tv_View = (TextView)findViewById(R.id.tv_View);
final EditText et_Text = (EditText)findViewById(R.id.et_Text);
//add new KeyListener Callback (to record key input)
et_Text.setOnKeyListener(new OnKeyListener()
{
//function to invoke when a key is pressed
public boolean onKey(View v, int keyCode, KeyEvent event)
{
//check if there is
if (event.getAction() == KeyEvent.ACTION_DOWN)
{
//check if the right key was pressed
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER)
{
//add the text to the textview
tv_View.setText(tv_View.getText() + ", " +
et_Text.getText());
//and clear the EditText control
et_Text.setText("");
return true;
}
}
return false;
}
});
}
我们将逐行分析代码。首先,与之前一样,我们加载布局。然后我们创建一个 TextView
和一个 EditText
变量,并将我们的界面对象加载到其中(这就是我们需要 ID 的原因)。最后,我们将一个新的 OnKeyListener
添加到 EditText
控件。在此 OnKeyListener
中,我们创建了 onKey
方法,当按下按键且控件处于活动状态时,该方法会被调用。在该方法中,我们执行两个检查:第一个是为了确保按键被按下(而不是释放),第二个是为了指定按键(在此例中,是方向键的中心键)。如果两个检查都通过,我们将 EditText
控件的文本添加到 TextView
,最后删除 EditText
控件的文本。运行并测试应用程序。太棒了,您创建了您的第一个真正的 Android 应用。
Android 应用设计
与任何平台一样,Android 也有其独特的设计挑战。请始终牢记,您正在为内存、磁盘空间和处理能力有限的移动平台开发。因此,Android 会自动终止进程(每个应用都在自己的进程中运行)以保持系统响应。进程按重要性排序。最重要的是当前活动的进程,其次是可见和已启动的服务进程。层次结构中最底层的进程类型是后台进程和空进程。在设计应用程序时请记住这一点,因为您不希望在处理过程中途被终止。此外,您可以利用 Android 手机内置的任何硬件。但请注意,并非所有手机都可能拥有这些硬件,因此并非所有手机都能运行您的应用。
本教程到此结束。希望您已经掌握了 Android 开发的基础知识。由于这是我在 CodeProject 上的第一篇文章,我非常感谢您的反馈!
历史
- 2010 年 8 月 18 日 - 一些小改动。
- 2010 年 8 月 16 日 - 上传了初始文章。