3G之Android学习第三章节<<HelloWorld应用程序分析>>

在上一节中给大家介绍了如何创建一个Android工程以及如何运行,那么接下来我们就以上节创建的HelloWorld工程为例,分析一下Android的目录结构。

一、HelloWorld工程目录结构图,如下:

二、在上面的目录结构图中res目录、src目录、AndroidManifest.xml文件时Android项目所必须的。其他目录或文件则是可选项

res目录中用来存放Android项目的各种资源文件,比如layout文件下存放的是Android项目中界面的布局文件;values文件下存放的是各种XML文件的格式资源文件,例如字符串资源文件strings.xml,颜色资源文件colors.xml;drawable-hdpi,drawable-ldpi,drawable-mdpi,这三个目录分别用于存放高低中三种不同分辨率的图片,如果只准备一种的情况下直接放在drawable-hdpi文件下即可;src目录用来存放应用程序源码文件目录;AndroidManifest.xml文件时Android项目的系统清单文件,相当于应用的配置文件,它的文件名是固定的,不能修改。在代码编写的过程中,需要同时修改AndroidManifest.xml,如果配置出现错误会导致程序不能正常运行。应用程序需要通过它向Android系统提供一些必需的信息。它描述了package中的全局数据,包括了package中暴露的组件(activities, services, 等等),他们各自的实现类,各种能被处理的数据和启动位置。这些信息需要在 application运行前提供给系统。

到这大家肯定对Android项目的目录有一定认识了吧,那么接下来就那我们新建的HelloWorld项目根据上面知识进行具体的解释。

三、HelloWorld工程目录结构解释

首先,来看一下res/layout/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:id="@+id/hello"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="@string/hello"
    />
</LinearLayout>

这是Android的布局文件,在上面XML文档的根元素是:LinearLayout,它代表了一个线性的布局,在该界面里包含了一个UI控件TextView,TextView代表的是一个文本框,在后续的章节中我们会详细的介绍Android中控件的使用,那么现在根据目前布局文件的需要,先给大家解释一下Android UI控件中几个通用的的属性:

android:id该属性表示该控件的唯一标识,在我们程序中可以通过findViewById(控件Id)来获取指定控件的内容;

android:layout_width属性表示设置组件的宽度,如果该属性值为fill_parent,则说明该组件和父容器有一样的宽度;如果该属性值为wrap_content,则说明该组件的宽度取决于它的内容。

android:layout_height属性表示该组件的高度,如果该属性值为fill_parent,则说明该组件和父容器有一样的高度;如果该属性值为wrap_content,则说明该组件的高度取决于它的内容。

Android通过XML文件进行布局,可以更好的进行界面的管理,XML负责界面的设置,java应用程序负责业务逻辑,这样就大大降低了程序的耦合性。

接着来看一下src目录下的Android项目源代码,该目录是com\tjitcast\slw目录下有一个HelloWorld.java文件,打开该文件内容如下:

package com.tjitcast.slw;

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);
    }
}

对于大家来说这段代码都能看懂,接下来我们需要来了解一下它的作用以及功能:

Activity是Android应用中负责与用户进行交互的组件,如果了解Swing的话,你可以把它想象成Swing中的JFrame窗体。不过Activity却和JFrame有很大的区别,在JFrame中可以有自己的布局管理器,可以往JFrame中添加组件,但是在Android中Activity只能通过上面的setContentView(View )方法来显示指定的组件。

R.java文件位于gen\com\tjitcast\slw目录下,打开该文件代码如下:

/* 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.tjitcast.slw;

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

通过R.java文件中的注释可以看出,R.java文件时由aapt(Android打包资源工具)工具根据应用程序中的资源文件来自动生成的,所以R.java文件的代码我们在开发过程中无需修改,可以把它看做我们应用程序中资源字典文件。在res目录下面的资源文件都会对应R类的一个内部类,比如所有界面布局资源对应的是layout内部类;所有的字符串资源对应的是string内部类,所有标识符资源对应的是Id内部类。每个具体的资源对应于内部类的一个public static final int 类型的属性,例如:在drawable-xxx文件中有一个icon.png图片,因此在R.drawable类里包含了一个public static final int icon=0x7f020000;

也可以看出在我们HelloWorld.java文件中,在加载布局文件main.xml文件时,也是通过R.layout.main来获取的,所以R.java文件是一个非常有用而且重要的资源字典文件。

AndroidManifest.xml文件是Android应用中的清单文件,也是每个Android项目都必须的,它是整个Android应用的全局描述文件。在AndroidManifest.xml文件中说明了该应用的名称,所使用的图标,以及包含的其他组件。

打开AndroidMainifest.xml文件代码如下:

<?xml version="1.0" encoding="utf-8"?>
<!-- 指定Android应用的包名 -->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.tjitcast.slw"
      android:versionCode="1"
      android:versionName="1.0">
      <!-- 指定当前应用程序的最小的SDK版本号 -->
    <uses-sdk android:minSdkVersion="10" />
<!--指定Android应用标签,图标  -->
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <!-- 定义Android应用的一个组件Activity,该Activity的类为HelloWorld,并且指定标签 -->
        <activity android:name=".HelloWorld"
                  android:label="@string/app_name">
            <intent-filter>
             <!-- 指定应用程序的入口 -->
                <action android:name="android.intent.action.MAIN" />
                <!-- 指定应用程序加载时运行该Activity -->
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

    </application>
</manifest>

在以上代码中:

android:label="@string/app_name",这说明该应用的标签为res/value目录下string.xml文件中名为app_name的字符串。

android:icon="@drawable/icon",这说明该应用的图标为res/drawable目录下文件名为icon的图片

在学习的过程中我们将会用到更多的知识,如果现在您已经能够写一个简单的HelloWorld Android应用程序那么你就可以继续往下学了,要想掌握所有的知识点需要一个时间更需要一个实际动手的过程。对于有些知识点在这只是稍微介绍了一下,随着学习的深入会给大家详细介绍的。

至此,Android的HelloWorld基本上给大家介绍完毕,后续会给大家介绍Android中UI控件的使用。

希望大家继续关注,共同学习,进步,多交流!!!今天就到这了,哇时间不早了该休息了,明天还有工作要挑战!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值