Android第一课--Adroid项目组织结构

首届 Google 暑期大学生博客分享大赛——2010 Andriod 篇

既然是第一课我尽量让有一点Java基础的人都能看懂,其实我也是新手。

略过开发环境的配置,我们直接讲如何在eclipse里面做一个简单的界面出来。

先看一下一个基本的Android Project组织结构:

2010080813003786.png

src下是我们自己写的源代码。Android包名至少要包含两层。

gen下面内容是自动生成的,我们不要去动它。它下面就一下R类,并且R类自动是和Show.java在同一个包下,所以在Show.java中可直接使用R类。

Android1.5是我们使用的开发包版本。

Rferenced Libraries下是我们引用入的外部Jar包。相当于你在VS中要“引用”一个dll文件。

assets下一般放一些文件资源,如一张图片、一个word文档。

res我把它称之为内部资源吧。这里面新建的文件名都要用小写。drawble下放一些图标呵、颜色值呵等,用于渲染控件。layout是布局文件,相当于ASP.NET中的aspx文件,而cs文件对应我们这里的src下的java文件。values下存在一些name-value对。

看一下show1.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"
/>
< Button
android:id ="@+id/next"
android:layout_width
="wrap_content"
android:layout_height
="wrap_content"
android:text
="下一步"
/>
</ LinearLayout >

 

LinearLayout是一个流式的布局管理器,它的orientation可设置为vertical或horizontal,这里设为vertical则控件依次垂直排列。

 

我们放了一个TextView用于显示文本和一个Button并赋给它一个id。

看一下Show.java里写了些什么:

 

 
  
package zcy.com;

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

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

 

Show继承自Activity类恰如我们写的ASP.NET页面继承自Page类。setContentView(R.layout.show1)指明了要在手机屏幕上把show1.xml中的东东显示出来,那前面的R.layout是什么意思呢?看一下R类的定义:

 

 

 
  
/* 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 zcy.com;

public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon = 0x7f020000 ;
}
public static final class id {
public static final int next = 0x7f050000 ;
}
public static final class layout {
public static final int show1 = 0x7f030000 ;
}
public static final class string {
public static final int app_name = 0x7f040001 ;
public static final int hello = 0x7f040000 ;
}
}

 

R是一个final类,它里面又嵌套了五个fianl类:attr,drawblw,id,layout,string。其中layout类下有一个属性int show1,知道R.layout.show1的渊源了吧。

 

运行效果:

2010080813332532.png

 

 

注意在show1.xml中TextView控件的text属性值可是“@string/hello”,为什么手机上显示的是:Hello Word,Show!呢?“@string/hello”的意思是引用values里面的一个名为hello的string的值,打开values下的strings.xml文件,看看这个值是多少:

 

 

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

当然我们现在只建立了一个Activity类,要是建立多个Activity程序会首先运行哪个呢?用ASP.NET建立网站时我们以在IIS里设置默认起始页,在Android中这样设置的:

打开AndroidManifest.xml,顾名思义,这是一个清单文件,里面包含了所有你新建的Activity类。但是这些activity是需要你手动加上去的,不会自动生成。

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

 

在 activity android:name =".Show"里面有这么两行<action android:name="android.intent.action.MAIN" />

 <category android:name="android.intent.category.LAUNCHER" />。这说明首先运行的就是这个Show活动。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值