Android核心组件:Activity

一、什么是Acticity:

  1. Acticity是用户与应用程序交互的接口
  2. 在应用中通常是一个单独的屏幕页面,用于显示可视化用户界面,并接收与用户交互所产生的事件。
  3. 由视图控件组成,并对事件作出响应。

二、Acticity类的继承结构:

Acticity在用户看来是一个界面,而在程序开发者看来是一个java程序。

  • java.lang.Object
    • android.content.ContextWrapper
      • android.view.ContextThemeWrapper
        • android.app.Activity

三、Activity的子类:

在这里插入图片描述

四、Acticity生命周期:

  1. 在android.app.Activity类中,Android定义了一系列方法,在应用程序中通过对这些方法的重写来完成对Activity的创建和使用。
public class Activity extends ApplicationContext {
	 //Activity启动后第一个被调用的函数,常用来进行Activity的初始化,例如创建View、绑定数据或恢复信息等。
     protected void onCreate(){}
     //当Activity显示在屏幕上可见时,该函数被调用。
     protected void onStart(){}
     //当Activity获得焦点,能够与用户交互,接受用户输入时,该函数被调用。此时的Activity位于Activity栈的栈顶。
     protected void onResume(){}
     //当Activity失去焦点,进入暂停状态时,该函数被调用。一般用来保存持久的数据或释放占用的资源。
     protected void onPause(){}
     //当Activity不可见进入后台时,该函数被调用。
     protected void onStop(){}
     //当Activity回到前台,再次可见时,调用该函数。
     protected void onRestart(){}
     //在Activity销毁时,该函数被调用。
     protected void onDestroy() {}
}

onCreate:在首次创建 Activity 时调用。系统向此方法传递一个 Bundle 对象,其中包含 Activity 的上一状态,不过前提是捕获了该状态,而后会调用onStart方法。(可以在此方法中执行所有正常的静态设置 ,比如:创建视图、将数据绑定到列表等等。)
onStart:在 Activity 即将对用户可见之前调用。而后如果Activity转入了前台就会调用onResume方法。 如果此时直接屏幕熄灭或者用户按下home键则会直接调用onStop方法,当然这种情况比较极端。
onResume:在 Activity 即将开始与用户进行交互之前调用。 此时,Activity 处于 Activity 堆栈的顶层,并具有用户输入焦点。当跳转另一个Activity,或者退出当前Activity后会调用onPause方法。
onPause:在系统即将开始继续另一个 Activity 时调用。 此方法通常用于确认对持久性数据的未保存更改、停止动画以及其他可能消耗 CPU 的内容,诸如此类。 它应该非常迅速地执行所需操作,因为它返回后,下一个 Activity 才能继续执行,所以不能执行耗时操作。而后正常情况下会调用onStop方法。但是有一种极端情况,就是如果这个时候快速让 当前Activity 返回前台,则会调用onResume方法。
onStop:在 Activity 对用户不再可见时调用。如果 Activity 被销毁,或另一个 Activity(一个现有 Activity 或新 Activity)继续执行并将其覆盖,就会调用此方法。而后如果 Activity 恢复与用户的交互,则会调用 onRestart 方法,如果 Activity 被销毁,则会调用onDestroy方法。
onRestart:在Activity被停止后再次启动时调用(即屏幕熄灭后再次回到app,按下home键后再次回到app),而后会调用onStart方法。
onDestroy:在 Activity 被销毁前调用,这是 Activity 收到的最后调用。 当 Activity 结束(对 Activity 调用了 finish 方法),或系统为节省空间而暂时销毁该 Activity 实例时,可能会调用它。 你可以通过 isFinishing 方法区分这两种情形。

  1. Activity类其他方法:
    在这里插入图片描述

五、Activity常用事件:

onKeyDown(int keyCode,KeyEvent event)//对应按键按下事件
onKeyUp(int keyCode,KeyEvent event)//对应按键松开事件
onTouchEvent(MotionEvent event)//对应点击屏幕事件

六、Activity类创建:

  1. 创建一个Activity子类,重写onCreate()方法,Activity启动时会调用该方法。该方法调用Activity的setContentView(View view)方法来显示Activity对应的View布局文件。
public class MainActivity extends Activity {
		protected void onCreate(Bundle savedInstanceState) {
				super.onCreate(savedInstanceState);//调用父类的onCreate()方法
				setContentView(R.layout.main);//调用布局文件
				......
		}
}
  1. 每一个Activity都需要在AndroidManifest.xml文件中注册。

AndroidManifest.xml文件是一个全局配置文件,每增加一个Activity,都需要在AndroidManifest.xml进行配置。方法:

  • <application>元素添加相应的<activity> 子元素。
  • <activity>标签中有一个必选属性android:name:Activity类名
  • android:label指定应用程序列表中程序图标下方的文字,如Activity未指定该属性,系统会使用 <application>标签的android:label属性值来代替。
  • android:icon属性值指定Activity对应的图标,如果未指定,则系统会使用<application> 标签的android:icon 属性值来代替。
    在这里插入图片描述
  1. 创建该Activity类的布局文件 (比如main.xml)。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 				
	xmlns:android="http://schemas.android.com/apk/res/android"
	android:orientation="vertical" 			
	android:layout_width="fill_parent"		
	android:layout_height="fill_parent">		
	<TextView 						
		android:layout_width="fill_parent"			
		android:layout_height="wrap_content" 		
		android:text="@string/hello" />			
</LinearLayout>

关于组件中的@string/hello :
可以将所有要显示的文字信息直接在values\strings.xml文件中进行配置:

<?xml version="1.0" encoding="utf-8"?>
<resources>
	<string name="hello">Hello World, Hello!</string>
</resources>

关于组件中的@+id/mytext
@+id固定,表示给该组件创建一个ID,后跟的mytext表示组件名,作用是在java程序中通过组件id取得该组件,进行相关监听器和属性的配置。

  1. 在Activity对应的布局文件中添加必要控件。

七、总结:

  • Android项目由若干个Activity程序所组成,每一个Activity都是一个Java类,都需要在AndroidManifest.xml文件中注册;
  • 一个Android项目中所有用到的资源都保存在res文件夹之中;
  • Android中的组件需要在布局管理器中进行配置,之后在Activity程序中可以使用findViewById()方法查找并进行控制;
  • 在布局管理器中定义的每一个组件都有其对应的操作类,用户可以直接实例化这些类的对象进行组件的定义显示;
  • 标准的Android项目,所有的文字显示信息应该保存在strings.xml文件中保存。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姓蔡小朋友

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值