标签介绍
1. manifest
这是文件的根节点。它必须要包含<application>
元素,并且指明xmlns:android
和package
属性。
manifest标签 属性介绍:
xmlns:android
(必填,该属性定义了Android命名空间,必须设置成http://schemas.android.com/apk/res/android 不用修改)package
(必填,该属性定义app包名,通常这里会填但是我们通常会在gradle里面定义包里,如果gradle里面填了这里会被覆盖,-> app -> build.gradle -> defaultConfig.applicationId = 包名)android:versionCode
(内部版本号。用来表示哪个版本更新,这个数字不会显示给用户,显示给用户的是versionName。这个数字必须是整数。不能用16进制,通常也会在 gradle 里面配置 -> app -> build.gradle -> defaultConfig.versionCode)android:versionName
(显示给用户看的版本号,通常也会在 gradle 里面配置 -> app -> build.gradle -> defaultConfig.versionName)
2. uses-feature
这个标签通常我们不会配置,所以这里就不做过多解释
这东西的作用是将APP所依赖的硬件或者软件条件告诉别人。它说明了APP的哪些功能可以随设备的变化而变化。
使用的时候要注意,必须在单独的<uses-feature>元素中指定每个功能,如果要多个功能,需要多个<uses-feture>元素。比如要求设备同时具有蓝牙和相机功能:
- <uses-feature android:name="android.hardware.bluetooth" />
- <uses-feature android:name="android.hardware.camera" />复制代码
3. application
该标签描述了应用配置。这是一个必备的元素。
application 属性介绍:
android:allowBackup
(表示是否允许APP加入到备份还原的结构中。如果设置成false,那么应用就不会备份还原。默认值为true。)android:fullBackupContent
(这个属性指向了一个xml文件,该文件中包含了在进行自动备份时的完全备份规则。这些规则定义了哪些文件需要备份。此属性是一个可选属性。默认情况下,自动备份包含了大部分app文件。 通过不填)android:supportsRtl
(声明你的APP是否支持RTL(Right To Left)布局。如果设置成true,并且targetSdkVersion被设置成17或更高。很多RTL API会被集火,这样你的应用就可以显示RTL布局了。如果设置成false或者targetSdkVersion被设置成16或更低。哪些RTL API就不起作用了。该属性默认的值是false)android:icon
(app的logo,用户下载包的时候看到的那个logo,该属性必须设置成一个引用,指向一个可图片的资源 比如:@mipmap/logo)android:label
(app的包名,用户下载包的时候看到的那个包名,该属性同上,设成一个字符串资源引用。比如:@string/app_name)android:theme
(该属性定义了应用使用的主题的,它是一个指向style资源的引用。各个activity也可以用自己的theme属性设置自己的主题)android:name
(指定哪一个类的实例被第一个创建。例如 com.quzou.app.App,如果manifest->package指定了包名也是com.quzou.app 那这里可以直接填 .App。当应用启动时,这个属性是可选的,大多数APP都不需要这个属性。在没有这个属性的时候,Android会启动一个Application类的实例.)android:roundIcon
(这是一个只适用在Android 7.1系统上的过渡版本,很快就被8.0系统的应用图标适配所替代了,我们不用去管它。)tools:replace
(一般解决合并出错)
4. activity
该元素声明一个实现应用可视化界面的Activity(Activity类子类)。这是<application>元素中必要的子元素。所有Activity都必须由清单文件中的<activity>元素表示。任何未在该处声明的Activity对系统都不可见,并且永远不会被执行。
activity 标签属性介绍:
android:name
(Activity类的名称,如果上面配置过package 这里可以直接 .SplashActivity )android:label
(类似于html里面的title, 如果这里未设置,会用<application>中的label属性)android:theme
(设定主题格式,与<application>中的theme类似)android:configChanges
(列出 Activity 将自行处理的配置更改消息。在运行时发生配置更改时,默认情况下会关闭 Activity 然后将其重新启动,但使用该属性声明配置将阻止 Activity 重新启动。 Activity 反而会保持运行状态,并且系统会调用其 onConfigurationChanged()方法。)android:launchMode
(这个是Activity的启动模式,有四种:standard、singleTop、singleTask和singleInstance。)
- standard (标准模式)也是系统默认模式 只要启动一次Activity,系统就会在当前任务栈新建一个实例
- singleTop (栈顶复用模式) 1.当前栈中已有该Activity的实例并且该实例位于栈顶时,不会创建实例,而是复用栈顶的实例,并且会将Intent对象传入,回调onNewInten()方法
- 2.当前栈中已有该Activity的实例但是该实例不在栈顶时,其行为和standard启动模式一样,依然会创建一个新的实例
- 3.当前栈中不存在该Activity的实例时,其行为同standard启动模式
- singleTask (站内复用模式) 在复用的时候,首先会根据taskAffinity去找对应的任务栈
- 1、如果不存在指定的任务栈,系统会新建对应的任务栈,并新建Activity实例压入栈中
- 2、如果存在指定的任务栈,则会查找该任务栈中是否存在该Activity实例a、如果不存在该实例,则会在该任务栈中新建Activity实例
- b、如果存在该实例,则会直接引用,并且回调该实例的onNewIntent()方法。并且任务栈中该实例之上的Activity会被全部销毁。
-
- singleInstance (单实例模式) 启动该模式Activity的时候,会查找系统中是否存在
- 1、不存在,首先会新建一个任务栈,其次创建该Activity实例
- 2、存在,则会直接引用该实例,并且回调onNewIntent()方法。
- 特殊情况:该任务栈或该实例被销毁,系统会重新创建。
- 复制代码
android:screenOrientation
(用于控制activity启动方向)
- unspecified,默认值,由系统决定,不同手机可能不一致
- landscape,强制横屏显示
- portrait,强制竖屏显
- behind,与前一个activity方向相同
- sensor,根据物理传感器方向转动,用户90度、180度、270度旋转手机方向,activity都更着变化
- sensorLandscape,横屏旋转,一般横屏游戏会这样设置
- sensorPortrait,竖屏旋转
- nosensor,旋转设备时候,界面不会跟着旋转。初始化界面方向由系统控制
- user,用户当前设置的方向复制代码
android:windowSoftInputMode
(用于控制弹出软键盘形式)
- stateUnspecified 软键盘的状态 (是否它是隐藏或可见 )没有被指定。系统将选择一个合适的状态或依赖于主题的设置
- stateUnchanged 软键盘被保持无论它上次是什么状态,是否可见或隐藏,当主窗口出现在前面时
- stateHidden 当用户选择该 Activity时,软键盘被隐藏——也就是,当用户确定导航到该 Activity时,而不是返回到它由于离开另一个 Activity
- stateAlwaysHidden 软键盘总是被隐藏的,当该 Activity主窗口获取焦点时
- stateVisible 软键盘是可见的,当那个是正常合适的时 (当用户导航到 Activity主窗口时 )
- stateAlwaysVisible 当用户选择这个 Activity时,软键盘是可见的——也就是,也就是,当用户确定导航到该 Activity时,而不是返回到它由于离开另一个 Activity
- adjustUnspecified 它不被指定是否该 Activity主 窗口调整大小以便留出软键盘的空间,或是否窗口上的内容得到屏幕上当前的焦点是可见的。系统将自动选择这些模式中一种主要依赖于是否窗口的内容有任何布局 视图能够滚动他们的内容。如果有这样的一个视图,这个窗口将调整大小,这样的假设可以使滚动窗口的内容在一个较小的区域中可见的。这个是主窗口默认的行为 设置
- adjustResize 该 Activity主窗口总是被调整屏幕的大小以便留出软键盘的空间
- adjustPan 该 Activity主窗口并不调整屏幕的大小以便留出软键盘的空间。相反,当前窗口的内容将自动移动以便当前焦点从不被键盘覆盖和用户能总是看到输入内容的部分。这个通常是不期望比调整大小,因为用户可能关闭软键盘以便获得与被覆盖内容的交互操作
- 复制代码
4.1 intent-filter
指明这个activity可以以什么样的意图(intent)启动。该元素有几个子元素可以包含。我们先介绍遇到的这两个
4.1.1 action
表示activity作为一个什么动作启动,android.intent.action.MAIN表示作为主activity启动。
4.1.2 category
这是action元素的额外类别信息,android.intent.category.LAUNCHER表示这个activity为当前应用程序优先级最高的Activity。
5. meta-data
meta-data 属性介绍:
android:name
(数据项名称,这是一个唯一值)android:resource
(一个资源引用)android:value
(数据项的值)