Android:创建HelloWorld并了解Android开发目录结构

-

HelloWorld是最简单、最经典的Android开发实例,这里我们将创建一个HelloWorld项目,并简单介绍目录结构。如果你还没有搭建最基本的Android开发平台,可以参考我的《零基础基于Eclipse搭建Android开发环境

 

1、创建HelloWorld工程

打开Eclipse,单击菜单 File > New > Project , 在弹出的窗口选择创建一个新的 Android 项目。

  • Project name:工程名,可以随意填写。
  • Contents:这个询问你是否需要在一个已有的工程或者源文件的基础上新建工程,当然我们这里选择Create new project in workspace。
  • Location:存放工程文件的目录。
  • Application name:应用程序的名字,以后如果你的程序要被人使用,那么别人看到的就是这个名字。当然APP name可以在Layoutvaluesstring.xml文件中修改,在此处不能为空。
  • Package name:也就是存放我们源文件的地方。我想有java开发经验和C#开发经验(类似于namespace)的人对此一定不陌生,其最大的作用就是能够防止类名冲突,使软件的整体结构清晰明了。

 

  • Build Target:所建工程主要面向哪个版本的平台,目前最新为4.0,我们选择2.3。
  • Create Activity:一个APP中,必须有一个Activity文件,在新建一个Project时,系统会默认为你创建一个Activity。
  • Min SDK Version:应用程序可以运行的API最低版本。在Android平台中,API级别和平台版本是一一对应的,从最老版的Android 1.0到现在的Android 4.0 级别一共有14个级别,详细的可以查看官方的帮助文档。也就是说,我们的这个值和我们选择的Android版本是有直接关系的,在上面我们选择2.3版本,所以Min SDK Version=9 。当然这个值可以修改,但是在配置文件中会有告警,而且如果运行在低版本(如1.5)上,有可能导致应用程序崩溃

点击Finish,创建完成。

 

2、通过虚拟机,运行Helloworld

创建一个新的AVD虚拟手机,这次要选择2.3.3的版本,和上面创建工程的版本统一,启动AVD。

android starting 2

在Eclipse左侧工程列表中的HelloWorld上右键 -> RunAs -> Android Application,之后再EClipse下方的Console调试框里会最后出现如下调试代码,这就表明你成功将Helloworld安装到虚拟机上了。

[2012-03-30 10:15:30 - HelloWorld] Success!
[2012-03-30 10:15:30 - HelloWorld] Starting activity com.ty.HelloWorldActivity on device emulator-5554
[2012-03-30 10:15:33 - HelloWorld] ActivityManager: Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.ty/.HelloWorldActivity }

看一下虚拟机,是否成功显示了呢

3、下面我们了解一下这个Project的目录结构

>、src 目录用于存放代码。
>、gen 目录用于存放对应该资源文件的代码。
>、res 目录用于存放资源文件。
>、reslayout 目录用于存放布局描述文件。
>、resvalues 目录用于存放常量定义文件。

3.1、src文件夹

顾名思义(src, source code)该文件夹是放项目的源代码的。打开HelloWorld.java文件会看到如下代码:

HelloWorld.javapackage com.ztyhome;

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

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

 

可以知道:我们新建一个简单的HelloWorld项目,系统为我们生成了一个HelloWorld.java文件。他导入了两个类android.app.Activityandroid.os.Bundle,HelloWorld类继承自Activity且重写了onCreate方法。

什么是“@Override”:

在重写父类的onCreate时,在方法前面加上@Override 系统可以帮你检查方法的正确性。例如,public void onCreate(Bundle savedInstanceState){…….}这种写法是正确的,如果你写成public void oncreate(Bundle savedInstanceState){…….}这样编译器回报如下错误——The method oncreate(Bundle) of type HelloWorld must override or implement a supertype method,以确保你正确重写onCreate方法。(因为oncreate应该为onCreate)。如果你不加@Override,则编译器将不会检测出错误,而是会认为你新定义了一个方法oncreate。

android.app.Activity类:因为几乎所有的活动(activities)都是与用户交互的,所以Activity类关注创建窗口,你可以用方法setContentView(View)将自己的UI放到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法是几乎所有的Activity子类都实现的:

  1. onCreate(Bundle):初始化你的活动(Activity),比如完成一些图形的绘制。最重要的是,在这个方法里你通常将用布局资源(layout resource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地交互的小部件(widgets)。setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理。
  2. onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。

更多的关于Activity类的详细信息此系列以后的文章将做介绍,如果你想了解更多请参阅相关文档。

android.os.Bundle类:从字符串值映射各种可打包的(Parcelable)类型(Bundle单词就是捆绑的意思,所有这个类很好理解和记忆)。如该类提供了公有方法——public boolean containKey(String key),如果给定的key包含在Bundle的映射中返回true,否则返回false。该类实现了Parceable和Cloneable接口,所以它具有这两者的特性。

3.2、gen文件夹

该文件夹下面有个R.java文件,R.java是在建立项目时自动生成的,这个文件是只读模式的,不能更改。R.java文件中定义了一个类——R,R类中包含很多静态类,且静态类的名字都与res中的一个名字对应,即R类定义该项目所有资源的索引。

3.3、Android 2.3.3文件夹

      该文件夹下包含android.jar文件,这是一个Java 归档文件,其中包含构建应用程序所需的所有的Android SDK 库(如Views、Controls)和APIs。通过android.jar将自己的应用程序绑定到Android SDK和Android Emulator,这允许你使用所有Android的库和包,且使你的应用程序在适当的环境中调试。例如上面的HelloWorld.java源文件中的:

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

这里两行代码就是从android.jar导入包。

3.4、assets

包含应用系统需要使用到的诸如mp3、视频类的文件。

3.5、res文件夹

资源目录,包含你项目中的资源文件并将编译进应用程序。向此目录添加资源时,会被R.java自动记录。新建一个项目,res目录下会有三个子目录:drawabel、layout、values。

  • drawabel-*dpi:包含一些你的应用程序可以用的图标文件(*.png、*.jpg)
  • layout:界面布局文件(main.xml)与WEB应用中的HTML类同,main.xml文件如下
main.xml<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<TextView
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
</LinearLayout>

布局配置中设置了一个 TextView,表示界面上显示一个文本标签,属性 android:text 是显示的内容。这里是 @string/hello 。在这里 @ 是引用标志,string 是常量配置文件 string.xml ,hello 是 string.xml 中 name=”hello” 的配置项。

  • 让我们再看看 values文件夹中string.xml 的配置:
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string name="hello">Hello World, HelloWorld!</string>
    <string name="app_name">HelloWorld</string>
</resources>

hello 的值为 Hello World, HelloWorld!。所以文本标签的显示内容就为Hello World, HelloWorld!。

3.6、AndroidManifest.xml

项目的总配置文件,记录应用中所使用的各种组件。这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。AndroidManifest.xml将包含如下设置:application permissions、Activities、intent filters等。xml是一种数据交换格式,AndroidManifest.xml就是用来存储一些数据的,只不过这些数据是关于android项目的配置数据

HelloWorld项目的AndroidManifest.xml如下所示:

AndroidManifest.xml<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="helloworld.test"
      android:versionCode="1"
      android:versionName="1.0">
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".HelloWorld"
                  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>

application 标签设置了程序的基本信息。如:android:icon 程序的图标,android:label 程序的名称等。文件中有一个名为 HelloWorld 的 Activity,并为其设置了 Intent-filter ,action 和 category 两个标签表明了该 Activity 为程序默认要运行的 Activity(因为可以建立多个继承自 Activity 的类,每个类都要在该文件进行配置,所以为其指定默认运行的 Activity 至关重要)。关于AndroidManifest.xml现在就讲这么多,以后用到了再讲。

3.7、default.properties

记录项目中所需要的环境信息,比如Android的版本等。 HelloWorld的default.properties文件代码如下所示,代码中的注释已经把default.properties解释得很清楚了:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值