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

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

>_第1张图片" src="https://img.it610.com/image/info5/b0d66b5294bd4ab8862d29894a756070.jpg" width="544" height="485" style="border:1px solid black;">

二、在上面的目录结构图中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. 一款常用的 Squid 日志分析工具
  2. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  3. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  4. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  5. 【Tensorflow】Tensorflow移植Android上的过程和坑
  6. Android(安卓)RadioButton用代码去圆点失效的问题解决
  7. Android动态创建一个个组件
  8. Android(安卓)Tangram模型:淘宝、天猫都在用的UI框架模型你一定要
  9. pc机进入android的shell

随机推荐

  1. Programming 3D games on Android(安卓)w
  2. No resource identifier found for attri
  3. android高效编程之使用本地变量
  4. ImageButton和Button区别
  5. Android中的TextView超过n行显示省略号
  6. Mac配置Android环境 adb
  7. android TraceView (图形化性能测试工具)
  8. 一个不错的启动菜单显示屏动画效果
  9. 【Android】OpenGL ES for Android(安卓)
  10. Android(安卓)图片预览模仿朋友圈查看图