活动(Activity)
活动官方的概念是指一种包含用户界面的组件,主要用于和用户进行交互。通俗理解一个活动就是一个页面的意思,学过web开发的都知道一个网站都是由很多个页面组成,这里的活动指的就是交互页面的控制器或后台程序。
手动创建活动(Activity)
使用android studio 创建活动时会自动给你创建以及添加相关配置,这里为了更好的了解活动的创建选择手动创建一个活动。在android studio新建一个android项目,我这里项目名叫做ActivityTest包名我使用默认(com.example.activitytest)的,下一步创建活动,android studio 提供了一些可选择的活动,因为是要自己手动创建所以选择Add No Activity,点击Finish,等待Gradle构建完成后项目创建成功了。
开始创建活动(Activity):右击com.example.tenderness.activitytest → New → Activity → Empty Activity,会弹出一个创建活动的会话框,给活动取个名称,并不要勾选Generate Layou File 和Launcher Activity 这两个选项。
Generate Layou File自动创建布局文件
Launcher Activity 设置为主活动
任何活动都会应该重写Activity的onCreate()方法,可以看出来onCreate()方法就是调用父类的onCreate()方法,内部可以加入自己的一些逻辑去实现。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
创建和加载布局
Android程序的设计讲究逻辑与视图分离的,每个活动都对应一个布局,布局就是用来显示内容的,创建布局跟创建活动差不多,只是布局存放的文件位置跟活动是不一致的,布局存放在app/src/main/res下面,查看res下面是否存在layout的目录,一般创建空项目时是不会给你自动生成这个文件夹的,没有的话就在res下新建一个layout文件夹,已经存在的话就右键 → Layout resource file去新建一个布局。
点击ok创建完成。
前面我们手动新建了一个活动,我们还需要把新建的活动关联一个布局,我们可以通过setContentView()方法来给活动加载一个布局。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.first_layout);
}
这里有人会疑惑R.layout.finres_layout是什么意思,项目中添加任何资源都会在R文件中生成一个相应的资源id,这里这句代码的意思就是在R文件中获取到finres_layout.xml布局的id,然后将值如setContentView()方法从而加载相应布局。
在AndroidManifest文件中注册
所有的活动都要在AndroidMainfest.xml中进行注册才能生效。
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tenderness.activitytest">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity"></activity>
</application>
</manifest>
活动的注册声明要放在<application>标签内,通过<application>标签来对活动进行注册,所以我们之前手动新建的活动需要在这里注册一下,很显然Android Studio已经自动为我们注册了我们之前新建的活动。如果没有进行注册的话会导致程序发生崩溃现象。
这个时候的程序任然是不能运行的,还需要配置个主活动,因为不配置主活动的话程序运行时不知道先运行谁,声明主活动只需要在注册的活动节点下面添加一下节点:
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
除了可以声明主活动外,还可以使用android:label指定活动的标题,给主活动指定的lable不仅会成为标题栏中的内容,还会成为启动器中应用程序的名称;
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tenderness.activitytest">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name=".MainActivity"
android:label="The is MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
这个时候我们可以正常运行这个程序了。