第二章 活动

活动 Activity 是一种可以包含用户界面的组件,主要用于和用户交互。一个应用程序可以包含零个或多个活动,但不包含任何活动的应用程序很少见。

创建活动

右击com.example.helloworld 包 -> New -> Activity ->Empty Activity 会弹出一个创建活动的对话框,将活动命名为FirstActivity,并且不要勾选Generate Layout File 和 Launcher Activity 这两个选项。
在这里插入图片描述
勾选Generate Layout File 表示会自动为FirstActivity 创建一个对应的布局文件,勾选Launcher Activity 表示会自动将 FirstActivity 设置为当前项目的主活动。勾选Backwards Compatibility 表示会为项目启用向下兼容的模式,这个选项要勾上。点击Finish 完成创建。

项目中的任何活动都应该重写Activity 的onCreate 方法,而目前的FirstActivity 中已经重写了这个方法,这是Android Studio 自动完成的。

public class FirstActivity extends AppCompatActivity{
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState)
	}
}

可以看到onCreate()方法非常简单,只是调用了父类的onCreate()方法。这只是默认的实现,后面需要在里面加入自己的逻辑。

Android 程序的设计讲究逻辑和视图分离,最好每个活动都能对应一个布局,布局就是用来显示界面内容的。
右击app/src/main/res 目录 -> New ->Directory,会弹出一个新建目录的窗口,先创建一个名为layout 的目录。然后对着layout 目录右键 -> New -> Layout resource file ,又会弹出一个新建布局资源文件的窗口,将这个布局文件命名为first_layout,根元素就默认选择为LinearLayout。
在这里插入图片描述
点击OK完成布局的创建,会看到布局编辑器
在这里插入图片描述
这是Android Studio 提供的可视化布局编辑器,可以在屏幕的中央区域预览当前的布局。窗口的最下方有两个切换卡,左边是Design,右边是Text。Design 是当前的可视化布局编辑器,不仅可以预览当前的布局,还可以通过拖放的方式编辑布局。而Text 则是通过XML 文件的方式来编辑布局。点一下Text 切换卡,可以看到如下布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orentation="vertical"
	android:layout_width="match_parent"
	android:layout_height="match_parent">
	
</LinearLayout>

由于在创建布局文件时选择了LinearLayout 作为根元素,布局文件中已经有一个LinearLayout 元素了。现在对这个布局稍做编辑,添加一个按钮。

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:orentation="vertical"
	android:layout_width="match_parent"
	android:layout_height="match_parent">
	<Button
		android:id="@+id/button_1"
		android:layout_width="match_parent"
		android:layout_height="wrap_content"
		android:text="Button 1"/>
</LinearLayout>

这里添加了一个Button 元素,并在Button 元素的内部增加了几个属性。android:id 是给当前的元素定义一个唯一标识符,之后可以在代码中对这个元素进行操作。如果需要在XML 中引用一个id,就使用@id/id_name 这种语法,如果需要在XML 中定义一个id,则要使用@+id/id_name 这种语法。android:layout_width 指定了当前元素的宽度,使用match_parent 表示当前元素和父元素一样宽。android:layout_height 指定当前元素的高度,使用wrap_content 表示当前元素的高度只要能刚好包含里面的内容就行。android:text 指定了元素中显示的文字内容。可以通过右侧工具栏的Preview 来预览一下当前布局。

在活动中加载这个布局,重新回到FirstActivity,在onCreate()方法中加入如下代码

public class FirstActivity extends AppCompatActivity{
	@Override
	protected void onCreate(Bundle savedInstanceState){
		super.onCreate(savedInstanceState);
		setContentView(R.layout.first_layout);
	}
}

这里调用了setContentView()方法,给当前活动加载一个布局,而在setContentView()方法中,一般都会传入一个布局文件的id。项目中添加的任何资源都会在R文件中生成一个相应的资源id,因此刚才创建的first_layout.xml 布局的id 应该是已经添加到R 文件了。

在AndroidManifest 文件中注册。
所有的活动都要在AndroidManifest.xml 中进行注册才能生效。打开 app/src/main/AndroidManifest.xml 文件。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.helloworld">
	<application
		android:allowBackup="true"
		android:icon="@mipmap/ic_launcher"
		android:label="@string/app_name"
		android:supportsRtl="true"
		android:theme="@style/AppTheme">
		<activity android:name=".FirstActivity"></activity>
	</application>
</manifest>

可以看到,活动的注册声明放在<application> 标签内,通过<activity> 标签对活动进行注册。
在<activity> 标签中使用android:name 来指定具体注册哪个活动。.FirstActivity 就是com.example.helloworld.FirstActivity 的缩写。由于在最外层的<manifest> 标签中已经通过package 属性指定了程序的包名是com.example.helloworld,因此在注册活动时,这部分可以省略,直接使用.FirstActivity。

为程序配置主活动
配置主活动的方法就是在<activity> 标签的内部加入<intent-filter> 标签,并在这个标签里添加<action android:name=“android.intent.action.MAIN”/> 和 <category android:name=“android.intent.category.LAUNCHER”/> 这两句声明。

可以使用android:label 指定活动中标题栏的内容,标题栏是显示在活动最顶部的。给主活动指定的label 不仅会成为标题栏中的内容,还会成为启动器(Launcher)中应用程序显示的名称。

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
	package="com.example.helloworld">
	<application
	···>
		<activity android:name=".FirstActivity"
			android:label="This is FirstActivity">
			<intent-filter>
				<action android:name="android.intent.action.MAIN"/>
				<category android:name="android.intent.category.LAUNCHER"/>
			</intent-filter>
		</activity>
	</application>
</manifest>

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

在这里插入图片描述
在界面的最顶部是一个标题栏,标题栏的线就是在布局文件first_layout 中编写的界面。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值