上一节课中,将HelloWorld程序中的目录介绍给了大家认识,不知道大家还记不记得她们了。如果记不清楚,也没关系,慢慢来。好了,今天我要跟大家分享的是,Manifest.xml文件的不完全解释。既然要将Manifest.xml的具体内容,为什么还是不完全的呢?因为Manifest.xml中包含的知识点比较多,对于刚学Android的童鞋来说,记住不也没必要记住所有的标签含义。在这里,我只是讲一些基础的知识点,其他的知识点会在后面的博文中逐步跟大家分享。
这是HelloWorld程序自动生成的Manifest.xml文件,包含四层标签内容,分别是<manifest>、<application>、<activity>、<intent-filter>。
第一层:<manifest>
package指的是app的包名
android: versionCode指的是app的版本,给计算机看的
android: versionName指的是app的版本名字,给用户看的
第二层:<application>
android: allowBackup 是允许app备份的意思,其作用和危害具体内容可以参考下面链 接:http://www.freebuf.com/articles/terminal/60778.html
android: icon 指的是呈现手机桌面上的app图标,等于号后面的是属性值,可以理解为drawable文件下的ic_launcher文件,如 果你细心的话,就会知道ic_launcher是个图片文件。在这里要强调的是,“res”文件下有多个“drawable”前缀文件夹,后缀指的 是不同分辨率下会应用到的不同资源。就是说,不同分辨率的手机,装了这一个app后,app会自动调用不同分辨率的图片资 源,为了保证app的兼容性,最好每个文件夹下都要放置相应分辨率的图片资源。
android: label指的是呈现在手机桌面上的app名字
android: theme指的是app的主题,就是样式
第三层: <activity>
在解释此标签下的属性前,先简单说明下activity是什么。道上的人一般解释为“活动”,但是更多的人喜欢直接称为“activity”。a ctivity是android四大组件中的一个,提供一个屏幕,用户可以用来交互为了完成某项任务,例如拨号、拍照、发送email、看地 图。至于其他三个,大家可以先行百度下。
android:name是Activity的名字,名字前面的“.”指的是相对路径,即在package下的位置,当然在此package路径下,这个"."是 可以去除掉的。我试验过,去掉之后没有影响app的运行。
android:label的解释见<application>
第四层:<intent-filter>
android.intent.action.MAIN决定一个应用程序最先启动那个组件
android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里(说白了就是是否在桌面上显示一个图标)
这两个属性组合情况:
第一种情况:有MAIN,无LAUNCHER,程序列表中无图标
原因:android.intent.category.LAUNCHER决定应用程序是否显示在程序列表里
第二种情况:无MAIN,有LAUNCHER,程序列表中无图标
原因:android.intent.action.MAIN决定应用程序最先启动的Activity,如果没有Main,则不知启动哪个Activity,故也不会有图标 出现,所以这两个属性一般成对出现。
如果一个应用中有两个组件intent-filter都添加了android.intent.action.MAIN和
android.intent.category.LAUNCHER这两个属性, 则这个应用将会显示两个图标, 写在前面的组件先运行。
以上这段文字是摘自别人的博客,详见:http://blog.csdn.net/cnnumen/article/details/8464786。图上还有两行代码没有进行解释,这也是留给大家的作业,自己动手,丰衣足食。