`
yidongkaifa
  • 浏览: 4063405 次
文章分类
社区版块
存档分类
最新评论

Android 目录结构分析

 
阅读更多

1、Android项目目录结构

android项目和java项目一样,,src文件夹是项目的所有包及源文件(.java),res文件夹中包含了项目中的所有资源,比如:程序图标(drawable)、布局文件(layout)、常量(values)。android项目中多了gen文件夹,里面是R.java文件,定义该项目所有资源的索引文件。还有一个android项目必须的AndroidManfest.xml文件。项目结构图如下:

1 R.java文件是项目创建的时候自动生成,是只读文件,不能够更改。其代码如下:

  1. /*AUTO-GENERATEDFILE.DONOTMODIFY.
  2. *
  3. *Thisclasswasautomaticallygeneratedbythe
  4. *aapttoolfromtheresourcedataitfound.It
  5. *shouldnotbemodifiedbyhand.
  6. */
  7. packagecom.hanfeng.demo;
  8. publicfinalclassR{
  9. publicstaticfinalclassattr{
  10. }
  11. publicstaticfinalclassdrawable{
  12. publicstaticfinalinticon=0x7f020000;
  13. }
  14. publicstaticfinalclasslayout{
  15. publicstaticfinalintmain=0x7f030000;
  16. }
  17. publicstaticfinalclassstring{
  18. publicstaticfinalintapp_name=0x7f040001;
  19. publicstaticfinalinthello=0x7f040000;
  20. }
  21. }

通过上面代码,我们可以看到这些常量与res文件夹中的文件名字一样,说明了R.java文件存储了该项目中的所有资源索引。R.java文件的存在,方便资源的使用,当我们在项目中加入新资源,只需刷新项目,R.java文件就会自动生成所有资源的索引。分析上面的xml文件:

2 AndroidManfest.xml文件包含了项目中所有使用的Activity、Service、Receiver,代码如下:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <manifestxmlns:android="http://schemas.android.com/apk/res/android"
  3. package="com.hanfeng.demo"
  4. android:versionCode="1"
  5. android:versionName="1.0">
  6. <uses-sdkandroid:minSdkVersion="8"/>
  7. <applicationandroid:icon="@drawable/icon"android:label="@string/app_name">
  8. <activityandroid:name=".AndroidTest"
  9. android:label="@string/app_name">
  10. <intent-filter>
  11. <actionandroid:name="android.intent.action.MAIN"/>
  12. <categoryandroid:name="android.intent.category.LAUNCHER"/>
  13. </intent-filter>
  14. </activity>
  15. </application>
  16. </manifest>
分析上面的xml文件:

【xmlns:android】:包含命名空间的声明。xmlns:android="http://schemas.android.com/apk/res/android",使得Android中各种标准属性能够在文件中使用,提供大部分元素的数据。

【package】:声明应用程序包。

【application】:包含package中application级别组件声明的根节点。此元素耶可包含application的一些全局和默认的属性,如标签、icon、主题、必要权限等。一个manifest能够包含零个或一个此元素,不能大于一个。

【android:icon】:应用程序图标。

【android:lebel】:应用程序名字。

【Activity】:用户交互工具。

【android:name】:应用程序默认启动的Activity。

【intent-filter】:声明了指定一组组件支持的Intent值,从而形成IntentFilter。

【action】:组件支持的Intent action 。

【category】:组件支持的Intent Category。指定应用程序默认启动的Activity。

【uses-sdk】: 应用程序所使用的sdk版本。

3 String.xml 资源文件中的常量定义。代码如下:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <stringname="hello">HelloWorld,AndroidTest!</string>
  4. <stringname="app_name">AndroidDemo</string>
  5. </resources>

从上面的代码可以看出,文件中定义的字符串资源常量"hello"、"app_name"指向了R.java文件中的字符串资源。

下面看如何使用定义的这些资源。我们可以通过Context的getResource实例化一个Resource对象,然后通过Resource的getSting方法获取指定索引的字符串。代码如下:

  1. Resourcer=this.getContext().getResource();
  2. Stringappname=((String)r.getString(R.string.app_name));
  3. Stringhello=((String)r.getString(R.string.hello));

4 main.xml布局文件,代码如下:

  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns: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>

布局参数解析:

【<linearLayout>】:线性版面配置,在这个标签中,所有元件都是按由上到下的排列排成。

【android:orientation】:表示这个介质的版面配置方式是从上到下的垂直地排列其内部视图。

【android:layout_width】:定义当前视图在屏幕上所占的宽度,fill_parent即填充整个屏幕。

【android:layout_height】:定义当前视图在屏幕上所占的高度。

【wrap_weight】:随着文字栏位的不同而改变这个视图的高度或宽度。

5 AndroidTest.java 项目的猪程序文件。代码如下:

  1. packagecom.hanfeng.demo;
  2. importandroid.app.Activity;
  3. importandroid.os.Bundle;
  4. publicclassAndroidTestextendsActivity{
  5. /**Calledwhentheactivityisfirstcreated.*/
  6. @Override
  7. publicvoidonCreate(BundlesavedInstanceState){
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.main);
  10. }
  11. }

主程序AndroidTest继承自Activity类,重写了void onCreate(Bundle saveInstanceState)方法。在onCreate方法中通过setContentView(R.layout.main)设置Activity要显示的布局文件。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics