Android入门学习笔记(三):第一个Android应用程序

来源:互联网 发布:ubuntu如何复制文件夹 编辑:程序博客网 时间:2024/05/16 08:13


Android学习笔记(三):第一个Android应用程序

创建一个Android应用程序的步骤

1. 创建project :在Package Explorer 右键 >New>Android Project


2. 填写项目信息 如图


Project NameProject的名字,同时根据这个名字在workspace中自动生成相关目录

Application Name应用程序的名字

package Name:包名,有过java编程经验的都知道,一般用com.android.zhang这种格式

Create Activity勾选这个并填上Activity的名字,eclipse会自动生成一个继承于Activity的类

Min SDK Version程序所能兼容的最小版本的API,如这里选择了4,也就是可支持Andriod 1.6以上的版本。通常选择Build Target的编译版本一致。


. eclipse自动生存工程


如图:


在工程上右键 > Run As > Android Application

就会自动启动Android模拟器出现下图


这就代表这个程序成功运行。  但是为什么我们什么代码都没编写,连hello world都没写,程序就可以运行了呢?

这就是eclipse自动为我们生成了相应文件,可以说是个模板。


. eclipse生成目录详解

如上面的图片,eclipse自动生成了srcgenAndroid 1.6res四个文件夹

src文件夹详解:


src文件夹里存放的是我们的代码源文件,里面的HelloWorld.java就是新建工程时自动生成的一个Activity。点击HelloWorld.java, 看到如下代码

package com.android.zhang;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);    }}


代码很简单,一个继承于ActivityHelloWorld类,然后复写了onCreate方法

Android 1.6 文件夹详解


这个文件夹下放置了

android.jarjar文件包 包括了我们所需要的所以android提供的类

assets文件夹 用于存放一些文件(暂时还不懂)

res 文件夹详解


该文件夹下也是放置一些程序所需要用到的资源

res 下的drawable-hdpidrawable-ldpidrawable-mdpi 三个文件夹里面分别放置高、低、中 三种分辨率大小的图片,如这是因为现在的Android设备硬件参差不齐,分辨率大小不一,如果程序里的图片都有三种不同大小分辨率将更好的适用于不同的手机。

layout 下的main.xml 是布局文件,用于管理我们的UI,我们这个例子的main.xml就是HelloWorld这个Activity的布局文件,如下

<?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>


这个xml文件的根元素 LinearLayout 表明HelloWorld这个Activity是按线性布局排列的,类似的还有 TableLayout(表格布局)、RelativeLayout(关系布局)等

下面那行:

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

是他的命名空间

三个属性:

android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

 属性 android:orientation 是排列方向,值"vertical"指明这个Activity是按垂直方向的线性排列的,如果值为"horizontal",则是水平方向线性排列。

属性 android:layout_widthandroid:layout_height分别是组件的宽度和高度,值"fill_parent"指填充整个父控件,值"wrap_content"

LinearLayout的子元素TextView是个文本框,也就是我们运行这个程序时看到的Hello World,HelloWorld!


android:text="@string/hello"

指明这个文本框的文字是"@string/hello"来决定的

Values文件夹中的strings.xml中存放的是一些字符串常量

<?xml version="1.0" encoding="utf-8"?><resources>    <string name="hello">Hello World, HelloWorld!</string>    <string name="app_name">HelloWolrd</string></resources>


hello的值是"Hello World, HelloWorld!"

app_name 的值是 "HelloWorld"

gen 文件夹详解

 gen 文件夹下的R.javaeclipse自动生成的,不要去修改

res文件夹里放置的任何资源文件都会在R,javar中自动生成相应ID

如我们在res/中加入某些资源,例如一个图标,会在gen/下的R.java中生成一个ID,而assets下的资源将不会 

/* AUTO-GENERATED FILE.  DO NOT MODIFY. * * This class was automatically generated by the * aapt tool from the resource data it found.  It * should not be modified by hand. */package com.android.zhang;public final class R {    public static final class attr {    }    public static final class drawable {        public static final int icon=0x7f020000;    }    public static final class layout {        public static final int main=0x7f030000;    }    public static final class string {        public static final int app_name=0x7f040001;        public static final int hello=0x7f040000;    }}


如  public static final int icon=0x7f020000; 

res中 drawable-hdpi 中的icon.png生成ID 0x7f020000

这样做的好处是非常明显的,在我们编写代码时,可以直接通过这个类中对应的ID来引用相应的资源。 如在布局文件 main.xml中有行

android:text="@string/hello"

所以我们看到的程序的文本框中显示的就是strings.xmlhello的值

strings.xml

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

hello的值是Hello World, HelloWorld!,所以我们看到的就是


的界面

AndroidManifest.xml 文件

AndroidManifest.xml是对整个应用程序进行相关的配置的

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.android.zhang"      android:versionCode="1"      android:versionName="1.0">    <uses-sdk android:minSdkVersion="4" /><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>

根元素 manifest 有几个属性,分别是命名空间、程序的包名和版本号

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

我们配置的时指定兼容的最低版本的SDK4Android 1.6

<application android:icon="@drawable/icon" 

android:label="@string/app_name">

应用程序图标是drawable里面的icon.png

程序的Labelstrings.xml里面的app_name,即HelloWorld

程序有几个Activity就要在这里配置几个activity元素

<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>


这个Activity是包名com.android.zhang 下的 HelloWorld

这个ActivityLabelstrings.xml里面的app_name,即HelloWorld

如果哪个Activity配置了<intent_filter>元素,则程序运行是会首先运行该Activity,就像java中的main函数一样

回过头来看整个程序

HelloWorld.java中复写的onCreate函数里有句

setContentView(R.layout.main);

即设置这个Activity布局文件为layout里的main.xml

而在AndroidManifest.xml中为HelloWorld这个Activity配置为了<intent_filter>元素,并配置了程序的图标、程序的Label即这个程序的名字和HelloWorld这个ActivityLabel。所以打开程序就会显示HelloWorld这个Activity和它的Label

Activity--HelloWorld 的布局文件main.xml中配置了这个Activity的布局是垂直方向的线性布局,并有一个TextView,其值为strings.xml中的hello 即 "Hello World, HelloWorld!"

所以我们看到程序运行的情况会是


心得

之所以新建立的Android工程就可以运行并显示Hello World,是因为eclipse为我们自动生成了一个Android工程模板,包括一个Activity --- HelloWorld.java,布局文件----main.xml

还有strings.xml中有app_name hello,并在AndroidManifest.xml中都配置好了。虽然一句代码都没有编写,但我认识了一个Android工程中各个文件的作用,真正开始接触程序的编程了,笔记也写得开始混乱了,检查下去,还有太多要学习的


原创粉丝点击