Android应用程序项目结构


用Eclipse打开Android应用程序的项目可以看到如下图所示的文件结构。

 

      src文件夹保存的是我们编写的java源文件,我们编写的源代码一般都放在这个文件夹内。比如HelloAndroid.java这个文件就是我们编写的代码文件。

        

  1. package org.leo.android;   
  2.   
  3. import android.app.Activity;   
  4. import android.graphics.Color;   
  5. import android.os.Bundle;   
  6. import android.widget.TextView;   
  7.   
  8. public class HelloAndroid extends Activity {   
  9.     /** Called when the activity is first created. */  
  10.     @Override  
  11.     public void onCreate(Bundle savedInstanceState) {   
  12.         super.onCreate(savedInstanceState);   
  13.         TextView tv = new TextView(this);   
  14.          tv.setText("hello,android");   
  15.         tv.setBackgroundColor(Color.BLUE);   
  16.         setContentView(tv);   
  17.   
  18.     }   
  19. }  
   

      gen目录的R.java是自动生成的,每一个在res目录中的资源文件都会在R.java中生成一个与资源文件同名的变量,并且由系统自动赋给每一个变量唯一的一个ID,在程序中可以直接引用ID来获取元素。

      R.java     

 
  1. /* AUTO-GENERATED FILE.  DO NOT MODIFY.  
  2.  *  
  3.  * This class was automatically generated by the  
  4.  * aapt tool from the resource data it found.  It  
  5.  * should not be modified by hand.  
  6.  */  
  7.   
  8. package org.leo.android;   
  9.   
  10. public final class R {   
  11.     public static final class attr {   
  12.     }   
  13.     public static final class drawable {   
  14.         public static final int icon=0x7f020000;   
  15.     }   
  16.     public static final class layout {   
  17.         public static final int main=0x7f030000;   
  18.     }   
  19.     public static final class string {   
  20.         public static final int app_name=0x7f040001;   
  21.         public static final int hello=0x7f040000;   
  22.     }   
  23. }  

      Android3.0目录中有android.jar文件,我们在项目中引用的所有android提供的类都来源于这个jar文件。

      assert目录和res目录都可以放项目中要用到的资源文件和一些类文件。但是assert目录和res目录的区别是res目录中的所有资源文件都会自动在gen/R.java文件中自动生成相应的ID。而asser目录中的文件则不会在R.java中自动生成相应的ID。

res目录中的三个文件夹drawable-hdpi,drawable-mdpi,drawable-ldpi表示Android应用程序在高分辨率,中分辨率,低分辨率的屏幕上的不同显示版本。这样可以使得我们编写的Android的应用程序在不同分辨率和大小的屏幕上运行时仍然保持界面的美观。所以程序有三个不同的显示版本。layout里面放置的是布局文件main.xml。每一个Activity都对应着一个xml文件,xml文件控制着activity界面中各种控件的位置以及大小,宽度等一些属性。values/strings.xml文件保存的是一些键值对<string类型的变量,变量的值>。strings.xml中的变量也会在R.java生成相应的ID。R.java相当于为项目中的资源文件提供了一个统一的引用入口。这样做的好处是可以在项目中引用不同的strings.xml文件从而实现不同的语言版本,有利于软件的国际化。

main.xml      

 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:orientation="vertical"  
  4.     android:layout_width="fill_parent"  
  5.     android:layout_height="fill_parent"  
  6.     >  
  7. <TextView     
  8.     android:layout_width="fill_parent"    
  9.     android:layout_height="wrap_content"    
  10.     android:text="@string/hello"  
  11.     />  
  12. </LinearLayout>  
  

strings.xml 

 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <resources>  
  3.     <string name="hello">Hello World, HelloAndroid!</string>  
  4.     <string name="app_name">MyHelloAndroid</string>  
  5. </resources>  

      AndroidManifest.xml是整个应用程序的配置文件。在这个文件中保存了引用程序的图标,标签,版本,以及启动应用程序时最先启动的Activity等信息。     

 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.       package="org.leo.android"  
  4.       android:versionCode="1"  
  5.       android:versionName="1.0">  
  6.     <uses-sdk android:minSdkVersion="11" />  
  7.   
  8.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  9.         <activity android:name=".HelloAndroid"  
  10.                   android:label="@string/app_name">  
  11.             <intent-filter>  
  12.                 <action android:name="android.intent.action.MAIN" />  
  13.                 <category android:name="android.intent.category.LAUNCHER" />  
  14.             </intent-filter>  
  15.         </activity>  
  16.   
  17.     </application>  
  18. </manifest>  

相关内容