您的位置:首页 > 移动开发 > Android开发

Android心得1.1--Android项目的目录与安装以及启动过程分析

2012-08-01 14:27 585 查看
1.Android项目的目录架构

src :
java原代码存放目录


gen :
自动生成目录


gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。

res : 资源(Resource)目录

在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。

res/drawable
专门存放png、jpg等图标文件。在代码中使用getResources().getDrawable(resourceId)获取该目录下的资源。drawable文件下有三个文件:drawable-hdpi、drawable-ldpi、drawable-mdpi分别代表高中低三种尺寸的屏幕大小。Android系统自动根据实际手机屏幕大小调用者三个文件的其中一个。

res/layout
专门存放xml界面文件,xml界面文件和HTML文件一样,主要用于显示用户操作界面。

res/values
专门存放应用使用到的各种类型数据。不同类型的数据存放在不同的文件中,如下:

· strings.xml
定义字符串和数值,在Activity中使用getResources().getString(resourceId) 或getResources().getText(resourceId)取得资源。它的作用和struts中的国际化资源文件一样。

<?xml version="1.0" encoding="UTF-8"?>

<resources>

  <string name="itcast">传智播客</string>

</resources>

 

· arrays.xml
定义数组。

<?xml version="1.0" encoding="utf-8"?>

<resources>

   <string-array name="colors">

        <item>red</item>

        <item>yellow</item>    

        <item>green</item>    

        <item>blue</item>  

   </string-array>

</resources>

 

· colors.xml
定义颜色和颜色字串数值,你可以在Activity中使用getResources().getDrawable(resourceId) 以及getResources().getColor(resourceId)取得这些资源。例子如下:

 <?xml version="1.0" encoding="UTF-8"?>

<resources>

  <color name="contents_text">#ff000000</color>

</resources>

 

· dimens.xml
定义尺寸数据,在Activity中使用getResources().getDimension(resourceId) 取得这些资源

 <?xml version="1.0" encoding="UTF-8"?>

<resources>

  <dimen name="key_height">50dip</dimen>

</resources>

 

· styles.xml
定义样式。

<?xml version="1.0" encoding="utf-8"?>

<resources>

   <style name="itcastText" parent="@style/Text">

        <item name="android:textSize">18px</item>

        <item name="android:textColor">#008</item>

   </style>

</resources>

 

res/anim/
编译成帧动画的XML文件。

res/xml/
在Activity中使用getResources().getXML()读取该目录下的XML资源文件。

res/raw/
该目录下的文件将直接被复制到设备上。编译软件时,这些数据不会被编译,它们被直接加入到程序安装包里。 为了在程序中使用这些资源,你可以调用getResources().openRawResource(ID) , 参数ID形式:R.raw.somefilename。

 

assets
:资源目录


Android除了提供/res目录存放资源外,在assets目录下也可以存放资源文件,而且/assets目录下的资源文件不会在R.java自动生成ID,所以读取其下的文件 必须指定文件路径,如:file/android_assets/xxx.3gp.

AndroidManifest.xml :
功能清单文件


 这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务,还需要在改文件中声明权限(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity。还有你开发好的各种组件(Activity、ContentProvider、BroadcastReceiver、Service即四大组件)也需要在改文件中进行配置。

default.properties:项目环境信息,一般是不需要修改此文件,比如告诉开发工具(即Eclipse)开发的Android应用程序的版本号:Project target.target=android-8。

2.  
清单文件中部分代码的含义


包名用于围标;

<android:icon=”@drawable/icon”>这个的含义分别是:icon翻译过来是图标的意思,@代表R文件;所以这个表达式代表的含义是该应用的图标ID是R文件下的drawable下的icon;

<android:name=”.MainActivity”>,MainActivity如果是当前包下的类,则“.”可以省略,但是建议别省略,否则容易出错;如果是子包下的类,则一定不能省略。例如:<android:name=”.sub.MainActivity”>

Activity一定要放在所在包或其子包中,不能放在其他包中。

清单文件是在软件安装的时候被读取的,而不是在程序运行的时候。可以把清单文件看成是一个注册表,实际上不是啊!

3.   <inter-filter>是意图过滤器,作用是:对数据进行过滤,如果匹配怎干一些事,否则什么都不干;意图代表一个想法,是用来匹配你要做的事情。

意图过滤器标签中包含两个参数标签。分别是<activity>、<categroy>分别是动作名称和类别名称。这两个参数的作用是:把应用安装和显示在手机的启动列表中,不加这两个参数也行,但是你编写的应用不会显示在手机的启动列表中。即中两个参数是应用的启动入口,所以这两个参数只能出现在一个activity中,不能出现在多个,因为一个应用程序只有有一个入口。

4. 
应用的安装过程分析

   .javaà.classà.dex(通过Android SDK下的dx工具)à打包(签名,开发工具自行进行)à.apk 
    

.dex和.apk文件在工作空间的相应项目(即应用)下的bin文件下,所有.java类都编译进一个.dex文件中;

签名在Eclipse下的windowàproferrncesàAndroidàBuild中,Default debug keystore

    内部执行的程序时:adb install c:\xxx.apk.

 5. 
应用的启动过程分析

   (1)过程分析。

创建线程à创建主线程à在主线程中实例化Activityà操作系统会把应用有关的信息(context)存在Activity中à调用onCreate()方法(此方法由android系统调用而非程序员调用)

  (2)采用sdk安装目录tools下的adb命令进行软件的安装和卸载:

  安装:adb install c:\hello.apk

  卸载:adb uninstall <应用的包名> 例子:adb uninstall cn.cadn.phone;

 

6.   
  Android显示单位

px (pixels)像素

   一般HVGA代表320x480像素,这个用的比较多。

dip或dp (device independent pixels)设备独立像素

   这个和设备硬件有关,一般为了支持WVGA、HVGA和QVGA 推荐使用这个,不依赖像素。

sp (scaled pixels — best for text size)比例像素

   主要处理字体的大小,可以根据系统的字体自适应。

除了上面三个显示单位,下面还有几个不太常用:

 in (inches)英寸

 mm (millimeters)毫米 

 pt (points)点,1/72英寸

为了适应不同分辨率,不同的像素密度,推荐使用dip
,文字使用sp。

7. 
布局介绍

   有四种:LinearLayout(线性布局)、RelativeLayout(相对布局)、TableLayout(表格布局)、FrameLayout(帧布局)。

   布局还分为为水平布局(horizontal)和垂直布局(vertical)。

顶级元素一定要指明命名空间,非顶级的可以不指明,但是一旦用作顶级元素时则一定要指明命名空间。例如:

<LinearLayout xmlns:android=”
http://schemas.android.com/apk/res/android”>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: