首页 > 代码库 > Android 第四课——AndroidManifest.xml

Android 第四课——AndroidManifest.xml

清单文件的具体介绍

在 Android 项目中,下一个重要的文件是清单文件。观察一下 AndroidManifest.xml 文 件的内容:

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

<manifest xmlns:android="http://schemas.android.com/apk/res/android"

     package="net.learn2develop.HelloWorld"

     android:versionCode="1"

     android:versionName="1.0.0" >

 

     <uses-sdk android:minSdkVersion="14" />

 

     <application

          android:icon="@drawable/ic_launcher"

          android:label="@string/app_name" >

          <activity

               android:label="@string/app_name"

               android:name=".HelloWorldActivity" >

               <intent-filter >

                    <action android:name="android.intent.action.MAIN" />

                    <category android:name="android.intent.category. LAUNCHER" />  

               </intent-filter>

          </activity>

</application>

</manifest>

文件 AndroidManifest.xml 包含了关于应用程序的详细信息。

● 它定义了应用程序的包名:net.learn2develop.HelloWorld。

● 应用程序的版本代码为 1(通过 android:versionCode 属性设置)。这个值是用来标识您的应用程序的版本号。它可用于以编程方式确定应用程序是否需要升级。

● 应用程序的版本名称是 1.0(通过 android:versionName 属性设置)。此字符串值主要用来显示给用户。这个值应该采用以下格式:<major>.<minor>.<point>。

● <uses-sdk>元素的 android:minSdkVersion 属性指定了应用程序运行所需的操作系统的最低版本。

● 应用程序使用位于 drawable 文件夹下的图像 ic_launcher.png。

● 应用程序的名称是在 strings.xml 文件中定义的名为 app_name 的字符串。

● HelloWorldActivity.java 文件代表了应用程序中的一项活动。代表这项活动的标签名称与应用程序的名称相同。

● 在这项活动的定义中,有一个名为<intent-filter>的元素: 意图筛选器的动作名称为 android.intent.action.MAIN,表明了这项活动是应用程序的入口点。

意图筛选器的类别名称为 android.intent.category.LAUNCHER, 表明了应用程序可从设备的启动器图标启动

  R.java 的内容

在向项目中加入更多的文件和文件夹后,Eclipse 将自动生成 R.java 的内容,而目前包

含以下内容:

/* 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 net.learn2develop.HelloWorld;

 

public final class R {

     public static final class attr {

     }

     public static final class drawable {

          public static final int ic_launcher=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 文件的内容。当您修改项目时,Eclipse 会自动为您生成相应内容。 

注意:

如果手动删除了 R.java 文件,Eclipse 会为您立即再重新生成一个。注 意,为了使 Eclipse 可以生成 R.java 文件,您的项目不能包含任何错误。如果 在删除 R.java 后发觉 Eclipse 没有重新生成这个文件,那么您需要再检查一遍 

项目。 代码中可能包含语法错误或者 XML 文件(如 AndroidManifest.xml、 main.

xml 等)的格式不良好。

既然知道是配置文件中的ID会在R中映射成变量,那么我们定义ID的时候必须符合java变量命名规则,如不能用数字开头,不能用保留字,不能用关键字等

程序中使用资源文件

res 中定义:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
   
     <string name="app_name">HelloWorld</string> 
  
</resources>

xml文件中使用:

@string/app_name

java中引用

R.string.app_name;// 获取整数索引

this.getResources().getString(R.string.app_name);// 获取实际值

程序启动过程

  1. Eclipse.java源文件编译成.class

  2. 使用dx工具将所有.class文件转换为.dex文件

  3. 再将.dex文件和所有资源打包成.apk文件

  4. .apk文件安装到虚拟机完成程序安装

  5. 启动程序  开启进程  开启主线程

  6. 创建Activity对象  执行OnCreate()方法

  7. 按照main.xml文件初始化界面


程序打印

1)Totast.makeText(this,msg,Toast.LENGTH__SHORT); // 第一个一般是activity本身,第二个是内容,第三个是时间。

2)log.i(Tag,msg);// 第一个一般是Tag即类的名称,第二个是内容

推荐使用第二种方式,因为第二种可以在控制台中设置查看Tag日志。

3)Android程序中如果出错,错误不会显示在Console中,而是显示在LogCat界面下。可以从window – show view中打开

4)日志信息分为5个级别:verbose > debug > info > warn > error 高级的包含低级的

5)可以创建过滤器对日志进行过滤显示,点击绿色加号,可以按照tag、pid、level进行筛选

主题与样式

1)主题的写法与样式的写法完全相同,都是在resource中采用style标签,一般主题使用在应用或activity中;系统主题也是很重要的,我们可以直接使用系统主题: android:XXXX 或者 android:style/Theme.Light.NoTitleBar.FullScreen 就是调用系统主题,然而调用样式或自定义主题都是 @style/xxx

自定义主题:

<style name="mythem">

    <item name="android:windowNoTitle">true</item>

    <item name="android:windowFullScreen">?android:windowNoTitle</item>

</style>

2)样式可以继承,在style中使用parent属性指定要继承的style的name值就好。也可以继承系统主题:parent="@android:style/Them.Black".

3)和string一样,样式和主题一般放在一个叫styles.xml 的文件中,便于查找。

图片处理

1)9patch图片(宫格图片),Android 的sdk自带处理软件,draw-9-patch.bat.

所谓9宫格的意思是:如下图:

技术分享

9宫格的意思就是把一张图片分成了9个区域

1)红色区域代表垂直拉伸时改变的区域,分别是:2 、5 、8

2)绿色区域代表水平拉伸时改变的区域,份分别是:4 、 5 、6

3)红绿色交界处的区域代表拉伸时水平和垂直在这里都会发生变化。

4)对于那些不在红色或者绿色区域当中的,如 1 、 7、 3 、 9 , 这些地方是在图片无论如何拉伸都不会发生变化的,一般这些地方都是在拉伸情况下图片容易失真,容易失真的有 渐变样式区域

2)不同的像素或者屏幕系统会自动采用不同的合适的图片,前提时这些图片存在。

布局单位

  • dp:即dip,device independent pixels(设备独立像素),不同设备有不同的显示效果,这个和设备硬件有关,一般我们为了支持WVGA、   HVGA和QVGA 推荐使用这个,不依赖像素;

  • px: pixels(像素),不同设备显示效果相同,一般我们用HVGA代表320x480像素,这个用的比较多;

  • sp: scaled pixels(放大像素),主要用于字体显示。

    总结:如果设置表示长度、高度等属性时可以使用dp。但如果设置字体大小,需要使用sp。


Android 第四课——AndroidManifest.xml