首先Manifest是清单的意思,是送货单的意思。那我们要怎么理解呢?很简单,我们类比就可以了,既然是送货单,它是用于描述所送的货们物的嘛。因些,AndroidManifest.xml是用于描述应用程序的。它描述权限,描述这个应用的四大组件。
权限
权限前面我们已经用到了,同学们不用去记。随着你代码写多了,就就知道什么时候需要获取权限了,写的时候不知道怎么写也没关系,因为会提示你的。这个不需要去记,实在不知道什么时候添加权限,你放心,会报错的嘛!报错会打出来告诉你需要什么权限的,OK!到这里的话,权限就搞定了!
One more thing.还有一点要注意的,就是权限的添加不要放错地方哦!
application
从上图我们可以看到有一个标签是application,也就是应用的意思。一个应用程序就有一个application,这里的话没有指明注册,默认就有一个application。如果大家要在application的生命周期里头做点什么东西,可以写一个application类,比如说BaseApplication并且继承Application这个类,复写application的生命周期方法,还有一点,就是要在Manifest里进行注册。如下:
先创建一个BaseApplication类:
在xml文件里进行注册,怎么注册呢?很简单,在application的标签属性里添加一个name属性:
到这里的话,当应用程序启动的时候,就会调用application的生命周期方法onCreate了。
我们继续去application别的属性。
android:allowBackup="true"
是否参与备份以及恢复.如果这个属性设置为false,就不会被备份或者恢复到曾经使用的时候一样,即使是全包备份,也不会把整个应用程序的数据保存到via数据库中.这个属性的默认值是true.
下一个属性是设置应用的图标,这个图标累死于我们的Pc上的桌面图标或者说是快捷启动图标。
android:icon="@mipmap/ic_launcher"
从上面的这个属性值来看,它的名字是ic_launcher,我们可以从Android Studio的左边可以看到,有多个这样的文件ic_launcher.png
它们分别是不同尺寸的设备使用的。Android系统的硬件设备太多了,这不跟iOS一样,三套图片就可以了。而android的话,因为厂商不统一,没有统一的标准,所以的话屏幕的尺寸非常多。
回到我们说的这个图标上,这个图标的名字是可自己定的,对吧!你可以叫logo,也可以叫launcher_icon
直接替换原有的文件,或者修清单文件里的引用名称也可以的。
好的,我们来看下一下属性值:
android:label="@string/app_name"
这个是Label,是吧!label是什么意思呢?标记,标签的意思。学习xml就知道了!
这个Label属性在这里有什么用呢?它也就是我们看到的应用名称啦!
在那时修改?它其实在资源res文件下面的strings.xml文件里。
application还有一个常用的标签:
android:theme="@style/AppTheme"
这个标签用于控制样式,它在那里呢?在res文件夹下面的styles.xml文件里:
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.NoActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
</resources>
这个表示没有actionbar,即app运行起来直接会进入界面。
这里可以看到parent这个单词,它的意思就是继承自Theme.AppCompat.NoActionBar,这javaWeb开发的struts的配置是一样的,都具有继承性,跟我们的java也是一样和道理。
Activity
我们简单地看看activity标签吧
<activity
android:name=".MainActivity"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
这是比较常见的配置方式,这里的name和application里的name是一样的。都是用于配置目标的类。四大组件的静态注册,name都是指要注册的类。
这里也可以声明label的值。因为接下来我们的intent-filter,也就是意图过滤器,声明的是主入口,表示启动application时,显示的是哪个activity界面。所以这里这个label值就会成为了这个入口的名称,当然啦,一个应用程序可以有多个入口。
主入口的默认写法:
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
当配置了多个入口时,会从上至下去找。比如下面这个,会先启动第一个activity。
public class MainActivity extends AppCompatActivity {
private EditText et;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button bnt = findViewById(R.id.bnt);
et = findViewById(R.id.et);
bnt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String text = et.getText().toString();//通过text获得密码内容
Log.e("wqq","输入的内容"+text);
}
});
}
}
setContentView(R.layout.activity_main); 表示设置layout目录下的activity_main.xml为布局