65.9K
CodeProject 正在变化。 阅读更多。
Home

Android 项目的基本结构

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.80/5 (4投票s)

2012 年 5 月 31 日

CPOL

4分钟阅读

viewsIcon

142965

downloadIcon

1789

Android 项目的基本结构及其主要文件和类。

引言

在本文中,我将解释 Android 项目的基本结构及其主要文件和类。

背景

我假设您具备一定的 Java 编程知识,并且知道如何在 Eclipse 中进行开发。要开发 Android 项目,您必须安装适用于 Eclipse 的 Android 插件。为此,请选择(在顶部菜单中)帮助 -> 安装新软件,然后在打开的窗口中输入地址:“https://dl-ssl.google.com/android/eclipse/”。如果需要,安装向导将引导您下载完整的 Android SDK。

Android 项目基本结构

在安装完开发 Android 文件所需的所有插件后,您就可以开始开发 Android 应用程序了。从顶部菜单选择文件 -> 项目,然后在“新建项目”窗口中选择“Android 项目”。按照项目设置向导操作,完成向导后,您将拥有一个基本的 Android 应用程序。每个 Android 项目包含几个文件夹:

  • src:此文件夹包含 Java 源代码文件。
  • gen:生成的 Java 库,此库仅供 Android 内部使用。
  • Res:我们可以在这里存储资源文件,例如图片、用于定义布局的 XML 文件等。在此文件夹内还有其他文件夹,如 DrawableLayoutValues
  • Drawable:我们在这里存储各种图形文件。我们可以看到三种类型的 drawable 文件夹。这是因为有许多 Android 设备具有不同的屏幕分辨率。默认情况下,此文件夹有几个版本,例如:Drawable-mdpidrawable-hdpi 等。这是为了适应不同的屏幕分辨率。
  • Layout:这是 XML 布局文件所在的位置。布局文件是 XML 文件,用于定义各种 Android 对象(如文本框、按钮等)在屏幕上的组织方式。
  • Values:存储各种字符串值(标题、标签等)的 XML 文件。

Android 项目中的主要文件

  • AndroidManifest.xml:这是 Android 的定义文件。它包含有关 Android 应用程序的信息,例如最低 Android 版本、访问 Android 设备功能的权限,如互联网访问权限、使用手机权限的能力等。
  • MainLayout.xml:此文件描述了页面的布局。这意味着每个组件(如文本框、标签、单选按钮、用户定义的组件等)在应用屏幕上的放置方式。
  • Activity 类:每个占据整个设备屏幕的应用程序都需要至少一个继承自 Activity 类的类。一个主要的方法是 OnCreate。此方法初始化应用程序并加载布局页面。

Android manifest 文件

典型的 Android.Manifest 文件如下所示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.firstproject"
    android:versionCode="1"
    android:versionName="1.0" >
		
    <uses-sdk android:minSdkVersion="7" />
	
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:name=".MynewprojectActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
		<category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
</manifest>

此文件中的一些重要定义

  • Android:versionCode:这是一个数值。这是一个重要属性,因为 Android 设备通过它来知道何时提醒用户升级到新版本。
  • Android:sdkMinVersion:定义了此应用程序可用的最早 Android 操作系统版本。
  • Activity 元素:定义此应用程序中可用的活动以及在启动时必须加载的活动。

布局文件

典型的布局文件如下所示

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <TextView
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="@string/hello" />

</LinearLayout>

此布局定义了一个对象,即 TextView。这是一个文本标签,当程序员想在您的应用程序中放置一个文本标题时使用。

Activity 类

一个主要的类是 Activity 类。我们已经在 android.manifest 文件中将其定义为主 activity 类。它是 Android 应用程序启动后第一个被加载和执行的类。

package com.firstproject;

import android.app.Activity;
import android.os.Bundle;

public class MynewprojectActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

我们在这里可以看到一个名为“onCreate”的主要方法,当 Activity 类被激活时调用。在我们的具体示例中,我们通过 setContentView(R.layout.main) 行定义了一个布局文件。

让我们看一些代码

我们想将标签中的文本从“Hello World”更改为“Hello New Application”。首先,我们必须将布局中的标签链接到一个 Java 对象。在此之前,我们必须为我们的标签对象指定一个 ID。这可以通过打开我们的布局文件来完成,在我们的具体项目中,该文件名为“main.xml”,位于“res/layout”文件夹中。

在“TextView”元素中,我们必须添加以下属性

android:id="@+id/myLabel"

之后,让我们打开我们的主 activity 类,在我们的例子中,它名为“MyfirstandroidprojectActivity.java”,并在“OnCreate”方法中添加以下行

TextView mTextView = (TextView)this.findViewById(R.id.myLabel);
mTextView.setText("Hello my New Project");

第一行定义了屏幕上的“TextView”对象与 Java TextView 对象之间的链接,第二行定义了“TextView”对象中的文本字符串。

摘要

本文仅解释了 Android 设备编程的基础知识。如果您想查看一个功能齐全的 Android 应用程序,欢迎访问我的国际象棋应用程序:http://code.google.com/p/pocket-chess-for-android/。您也可以通过 Google Play 上的此地址下载我的国际象棋应用程序到 Android 设备:https://play.google.com/store/apps/details?id=kobi.chess&feature=search_result

© . All rights reserved.