活动Activity

一、什么是活动

活动( Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用户进行交互。

一个应用程序中可以包含零个或多个活动,但不包含任何活动的应用程序很少见。

活动也是Android四大组件之一。

二、手动创建一个活动

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这样一个活动就创建完成了。

package com.example.activityteset;

import androidx.appcompat.app.AppCompatActivity;

import android.os.Bundle;

public class FirstActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    }
}

要知道,项目中的任何活动都应该重写Activity 的onCreate()方法, 而目前我们的FirstActivity中已经重写了这个方法,这是由Android Studio自动帮我们完成的。

三、创建和加载布局

Android 程序的设计讲究逻辑和视图分离,最好每一个活动都能对应一个布局,布局就是用来显示界面内容的,现在就来手动创建一个布局文件。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
创建成功后如下:
在这里插入图片描述
code模式下,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

</LinearLayout>

在code模式下为布局添加一个button元素,代码如下:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/button_1"
        android:text="Button 1"/>

</LinearLayout>

这里添加了一个Button元素,并在Button元素的内部增加了几个属性。

android:id是给当前的元素定义一个唯一标识符,之后可以在代码中对这个元素进行操作。

你可能会对@+id/button_1这种语法感到陌生,但如果把加号去掉,变成@id/button_1,这样你就会觉得有些熟悉了吧,这不就是在XML中引用资源的语法吗?只不过是把string替换成了id。是的,如果你需要在XML中引用一个id,就使用@id/id_ name 这种语法,而如果你需要在XML中定义一个id,则要使用@+id/id_name 这种语法。

android:layout width 指定了当前元素的宽度,这里使用match_ parent 表示让当前元素和父元素一样宽。android: layout_ height 指定了当前元素的高度,这里使用wrap_content表示当前元素的高度只要能刚好包含里面的内容就行。

android:text 指定了元素中显示的文字内容。

在Design模式下,观察效果如下:
在这里插入图片描述
在活动中加载布局:
在这里插入图片描述
可以看到,这里调用了setContentView() 方法来给当前的活动加载一个布局,而在setContentView()方法中,我们一般都会传人一个布局文件的id。

项目中添加的任何资源都会在R文件中生成一个相应的资源id,因此我们刚才创建的first_layout.xml布局的id现在应该是已经添加到R文件中了。

在代码中去引用布局文件的方法,只需要调用R. layout. first_ layout 就可以得到first_layout.xml布局的id,然后将这个值传人setContentView( )方法即可。

四、在AndroidManifest文件中注册

所有的活动都要在AndroidManifest.xml中进行注册才能生效,而实际上FirstActivity 已经在AndroidManifest.xml 中注册过了,打开app/src/main/ AndroidManifest.xml,代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.activityteset">

    <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/Theme.ActivityTeset">
        <activity
            android:name=".FirstActivity"
            android:exported="true" />
    </application>

</manifest>

可以看到,活动的注册声明要放在标签内,这里是通过标签来对活动进行注册的。

Android Studio帮我们自动完成了对FirstActivity 的注册。
之前在使用Eclipse创建活动或其他系统组件时,很多人都会忘记要去AndroidManifest.xml中注册一下,从而导致程序运行崩溃,AndroidStudio在这方面做得更加人性化。

在标签中我们使用了android:name 来指定具体注册哪一个活动, 那么这里填入的. FirstActivity其实这不过就是com. example. activitytest. FirstActivity的缩写而已。由于在最外层的标签中已经通过package 属性指定了程序的包名是com. example. activitytest,因此在注册活动时这一部分就可以省略了 ,直接使用. FirstActivity就足够了。

不过,仅仅是这样注册了活动,我们的程序仍然是不能运行的,因为还没有为程序配置主活动,也就是说,当程序运行起来的时候,不知道要首先启动哪个活动。配置主活动的方法其实在就是在标签的内部加入标签,并在这个标签里添加和这两句声明即可。

除此之外,我们还可以使用android:label指定活动中标题栏的内容,标题栏是显示在活动最顶部的,待会儿运行的时候就会看到。需要注意的是,给主活动指定的label 不仅会成为标题栏中的内容,还会成为启动器( Launcher )中应用程序显示的名称。

修改后的AndroidManifest.xml文件,代码如下所示:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.activityteset">

    <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/Theme.ActivityTeset">
        <activity
            android:name=".FirstActivity"
            android:exported="true">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER"/>
            </intent-filter>
        </activity>
        
    </application>

</manifest>

这样的话,FirstActivity 就成为我们这个程序的主活动了,即点击桌面应用程序图标时首先打开的就是这个活动。

另外需要注意,应用程序中没有声明任何一个活动作为主活动,这个程序仍然是可以正常安装的,只是无法在启动器中看到或者打开这个程序。这种程序一般都是作为第三方服务供其他应用在内部进行调用的,如支付宝快捷支付服务。

运行程序,效果如下:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值