清单文件的具体介绍
在 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);// 获取实际值 |
程序启动过程
Eclipse将.java源文件编译成.class
使用dx工具将所有.class文件转换为.dex文件
再将.dex文件和所有资源打包成.apk文件
将.apk文件安装到虚拟机完成程序安装
启动程序 – 开启进程 – 开启主线程
创建Activity对象 – 执行OnCreate()方法
按照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。
来源:oschina
链接:https://my.oschina.net/u/1989321/blog/362767