(原作于2010-04-16) 我们在学习一门新的语言时, 习惯于用”HelloWorld”来起步, 这对于程序员来说, 几乎已成为一个”神话”. 那么我们在开始Android学习的时候, 也不放延续一下这”神话”, 跟着我一起来, “Hello, Android!” 上一讲中, 已经成功配置了Android的开发环境.

         首先, 在Eclipse中建立一个Android的工程, 采取以下步骤: File->New->Projects, 选择Android Project, 有如下界面, 填写如下信息

        需要填写的包括项目名称, 应用程序的名称, 包名; 我们这里需要选择编译目标SDK, 传说1.6的SDK目前使用比较广泛, 因此不妨使用它来编译好了. 但是为了支持更多的手机使用, Min SDK Version可以写得更低. 1.6对应的整数版本号是4, 我这里把Min SDK Version设置成了1. 上面会有Warning, 但是可以无视. 最重要的是可以创建一个叫做”Activity”的东西. Activity可以当做是Android中最重要的组成部分之一. 通过Activity, 我们可以产生形形色色的界面, 并在后台实现不同的功能. 大多数Android程序就是由一个又一个的Activity组成的. 当然, 这里不自动生成Activity, 之后也有其他的办法去做这一步.

         Create New Project之后, 可以产生一个New Android Test Project, 但它是可选的. 直接Finish掉也没有任何关系.

         HelloAndroid这个Project已经建好了, 让我们来看一下包结构吧.

        

         来解释一下具体的含义. 首先是default.properties, 这个是Android开发工具自动生成的, 不需要做任何的修改, 当我们以不同版本的模拟器执行项目时, 在这儿会有一个target属性的自动变化.

         AndroidManifest.xml, 这相当于是Android Project的一个入口标识, 支持的SDK版本, Activity, 程序名称, 程序版本, 需要申请的手机执行权限等等, 都在这个地方进行注册. 之前说过, 大部分的Android程序都是由一个个的Activity组成, 在这个地方就需要将各个Activity分别注册好位置以及特定的属性. 例如:

<?xml version="1.0" encoding="utf-8"?>

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

      package="cn.orzstudio"

      android:versionCode="1"

      android:versionName="1.0">

    <application android:icon="@drawable/icon" android:label="@string/app_name">

        <activity android:name=".MainActivity"

                  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>

    <uses-sdk android:minSdkVersion="1" />

</manifest>
Package表示主包名, versionCode表示内部版本号, 只能是数字. 这个就能够识别不同版本的程序, 例如旧版本已经安装, 重新安装更新的版本(versionCode更大), 就可以使用”upgrade”的安装方式, 避免了卸载和数据丢失. versionName可以是数字以外的字符串, 一般可以定义为1.0, 1.1, 1.2这样的. Application这个tag中设置了icon(图标), label(程序名称), 但是你应该也注意到了, 这里面用到了@drawable和@string这样的格式. 这个和后面的activity定义中的@string/app_name是一样的. @drawable表示图标会使用drawable文件夹下的icon.png这个文件, @string表示会从values/strings.xml这个文件里面去读取app_name这个值. 例如strings.xml的样例是:
<?xml version="1.0" encoding="utf-8"?>

<resources>

    <string name="hello">Hello World, MainActivity!</string>

    <string name="app_name">第一个Android程序</string>

</resources>
凡是其中定义的string, 都可以在AndroidManifest.xml以及layout下面的样式xml文件中使用.

         回过头来继续看AndroidManifest.xml文件, 其中定义了MainActivity这个activity, 它内嵌了这样的标志:

<intent-filter>

                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />

            </intent-filter>
这就表示, 这是我们整个程序启动后, 第一个进入的Activity.

Drawable-*dpi这几个文件夹, 是1.6中支持的形式, 可以定义多种分辨率下使用不同的图标. 为了兼容更旧的版本(1.1, 1.5), 我们可以将这三个文件夹去掉, 只是用drawable一个文件夹, 其中放上一个48*48的icon文件.

Layout文件夹中可以定义各种显示效果, 定义好了之后再与Activity关联, 我们暂时跳过它, 不是它不重要, 而是它太重要了, 每个新的Activity, 每种不同显示效果的Activity, 都需要有不同的xml样式文件来支持, 甚至有时缺少了一些属性也会造成开发出来的程序的强制退出.

Gen这个文件夹, 叫做Generated Java Files, 顾名思义, 是自动生成的, 这有ide帮我们操作, 不需要太多操心. 例如我们在strings.xml中定义的字符串, 在layout中定义的xml layout, 都会被分配一个独特的id标识, 通过gen下的cn.orzstudio文件夹下的R.java来在程序中进行调用.

Src下, 自然是我们放置程序的地方.

现在已经自动建立了一个叫做MainActivity.java的文件, 让我们来简单看一下.

果然非常简单. 代码如下:

package cn.orzstudio;

import android.app.Activity;

import android.os.Bundle;

public class MainActivity extends Activity {

    /** Called when the activity is first created. */

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.main);

    }

}
所有的自定义Activity都需要继承Activity这个父类, 当然, 也有一些其他的Activity的子类可以替代, 并且会增加一些更加定制性的功能. 这个我们也留作后话.

在Eclipse中安装了Android开发插件后会有这么一个图标(下图中的小机器人).

 

点击它可以管理模拟器,

New中可以创建不同版本的模拟器, 只要你的SDK路径下包含有对应的版本开发包, 就可以建立这个版本的模拟器. 我们开发时也主要可以采用1.6的模拟器, 与SDK也对应起来.

任意取一个Name, Target中选择Android 1.6 – API Level 4. SD Card可以使用之前我们已经创建好的那个img文件. Skin选择默认. Hardware暂时也选择默认好了.

右击HelloAndroid的Project图标, 选择Run As -> Android Application, 点击选择Launch a new Android Virtual Device, 下面选择一个合适版本的模拟器, 点OK, 耐心等待.

 

恭喜你, HelloAndroid成功!

The post Android开发浅谈_从HelloAndroid开始 appeared first on 邮递员大叔.

阅读全文>>