Android开发实战(Activity界面表现详解)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
过渡页
TRANSITION PAGE
Chapter 6
Activity界面表现详解
程序中Activity通常的表现形式是一个单独的界面(screen)。每个Activity都是一个单独的类,它扩展
实现了Activity基础类。这个类显示为一个由Views组成的用户界面,并响应事件。
大多数程序有多个Activity。例如,一个文本信息程序有这么几个界面:显示联系人列表界面、写信息 界面、查看信息界面或者设置界面等。每个界面都是一个Activity。切换到另一个界面就是载入一个新的 Activity。某些情况下,一个Activity可能会给前一个Activity返回值——例如,一个让用户选择相片的 Activity会把选择到的相片返回给其调用者。
StartActivity.java的具体实现代码如下: public class StartActivity extends Activity
{@Override
public void onCreate(Bundle savedInstanceState)
// 为bn按钮绑定事件监听器
bn.setOnClickListener(new OnClickListener()
<LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:orientation="vertical"
android:layout_width="fill_parent"
第六章
6.1 Activity基础
6.1.1 Activity的状态及状态间的转换 在Android应用程序中,Activity有如下所示的四种基本状态:
第4 页
Active/Runing 一个新Activity启动 入栈后,它在屏幕最 前端,处于栈的最顶 端,此时它处于可见 并可和用户交互的激 活状态。
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
第 15 页
{
@Override public void onClick(View source)
{wenku.baidu.com
// 创建需要启动的Activity对应的Intent Intent intent = new Intent(StartActivity.this,SecondActivity.class); // 启动intent对应的Activity startActivity(intent); } } } });
第六章
6.1 Activity基础
6.1.3 Activity栈
第8 页
在开发人员自己的Activity中,只是根据需要复写相关的方法,Java的多态性会保证我们自己的 方法被虚拟机调用,这一点与Java中的MIDlet类似。例如如下自定义Activity的代码。 public class OurActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume();
第 12 页
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
本实例的具体实现流程如下:
第 13 页
(1)首先看第一个Activity的实现过程,文 件main.xml实现了第一个Activity的布局, 这个Activity也是项目的入口Activity。具
android:orientation="vertical"android:layout _width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/bn" android:layout_width="wrap_content"
的实例中已经多次用到了Activity。打开一个新界面后,前一个界面 就被暂停,并放入历史栈中(界面切换历史栈)。Android在历史栈 中保留程序运行产生的所有界面,从第一个到最后一个。使用者可以
回溯前面已经打开的存放在历史栈中的界面,也可以从历史栈中删除
没有界面价值的界面。和J2ME的MIDlet一样,在Android中, Activity的生命周期交给系统统一管理。与MIDlet不同的是,安装在 Android中的所有的Activity都是平等的。
Activity的“生”,但不能决定它的“死”,也就时 说程序员可以启动一个Activity,但是却不能手动地 “结束”一个Activity。
第六章
6.1 Activity基础
6.1.2 Activity栈
第6 页
Android通过Activity栈的方式来管理Activity,一个Activity实例的状态决定它在栈中的位置。处于 前台的Activity总是在栈的顶端,当前台的Activity因为异常或其他原因被销毁时,处于栈第二层的Activity将被
体实现代码如下:
<?xml version="1.0" encoding="utf8"?>
<LinearLayout
xmlns:android="http://schemas.andro id.com/apk/res/android”
android:layout_height="wrap_content"
用户界面等工作。大多数情况下,我们都要在这里从xml中加载设计好的用户界面。例如:
setContentView(R.layout.main); 当然,也可从savedInstanceStat中读取保存到存储设备中的数据,但是需要判断savedInstanceState是 否为null,因为Activity第一次启动时并没有数据被存贮在设备中: if(savedInstanceState!=null){ savedInstanceState.get("Key"); }
此时它依然与窗口管理器
保持连接,系统继续维护 其内部状态,所以它仍然 可见,但它已经失去了焦
点故不可与用户交互。
第六章
6.1 Activity基础
6.1.1 Activity的状态及状态间的转换
第5 页
注意:Activity是所有Android应用程序的根本,所有程序的流程都运行在Activity之中,Activity
Paused 当Activity被另一个透明 或者Dialog样式的 Activity覆盖时的状态。
Stoped 当Activity被另外一 个Activity覆盖、失 去焦点并不可见时处 于Stoped状态。
Killed Activity 被系统杀死回收或者 没有被启动时处于 Killed状态。 在Android应用程序 中,可以调用finish() 函数结束处理Paused 或者stopped状态的 Activity。
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
第 16 页
(3)再看第二个Activity的实现过程,布局文件是 second.xml,具体实现代码如下:
android:layout_width="wrap_content" android:layout_height="wrap_content " android:text="返回"/> <Button android:id="@+id/close" android:layout_width="wrap_content"
激活,上浮到栈顶。当新的Activity启动入栈时,原Activity会被压入到栈的第二层。
Activity在栈中的位置变化反映了它在不同 状态间的转换。Activity的状态与它在栈中的位 置关系如左图所示。由图中可以看出,除了最 顶层即处在Active状态的Activity外,其他的 Activity都有可能在系统内存不足时被回收,一 个Activity的实例越是处在栈的底层,它被系统 回收的可能性越大。系统负责管理栈中Activity 的实例,它根据Activity所处的状态来改变其在
第 11 页
Contents
Part1
Activity基础
Part2
案例6-1:启动、关闭 Activity
Part3
案例6-2:选择您所处的城 市
Part4
综合实例:会员注册系统
第六章
6.2 案例6-1:启动、关闭Activity
6.2.1 设计目标
演示启动Activity的过程,并允许程序在 两个Activity之间切换。
第六章
6.1 Activity基础
6.1.3 Activity栈
第 10 页
(2)protected void onStart():该方法在onCreate()方法之后或者Activity从Stop状态转换为Active状态
时被调用。
(3)protected void onResume():在Activity从Active状态转换到Pause状态时被调用。 (4)protected void onPause():暂停Activity时被回调。 (5)protected void onStop():在Activity从Active状态转换到Stop状态时被调用,一般在此保存 Activity的状态信息。 (6)protected void onDestroy():在Active被结束时调用,它是被结束时调用的最后一个方法,在此 一般实现释放资源功能或清理内存等工作。
栈中的位置。
第六章
6.1 Activity基础
6.1.3 Activity栈
第7 页
在类android.app.Activity中,Android 定义了一系列与生命周期相关的方法。如图 所示,Activity类间接或直接地继承了 Context、ContextWrapper、 ContextThemeWrapper等基类,所以 Activity可以直接调用它们的方法。
android:text="启动第二个Activity"/> </LinearLayout>
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
第 14 页
(2)第一个Activity对应的启动程序文件是 StartActivity.java,功能是载入布局文件 main.xml,并监听用户的单击屏幕操作,单击
第2 页
Contents
Part1
Activity基础
Part2
案例6-1:启动、关闭 Activity
Part3
案例6-2:选择您所处的城 市
Part4
综合实例:会员注册系统
第六章
6.1 Activity基础
第3 页
在Android应用程序中,Activity是最重要、最常见的应用组件之
一。Android应用的一个重要组成部分就是开发Activity,在本书前面
protected void onPause();
protected void onStop(); protected void onDestroy(); }
第六章
6.1 Activity基础
6.1.3 Activity栈
上述方法的具体说明如下:
第9 页
(1)protected void onCreate(Bundle savedInstanceState):这是一个Activity实例被启动时调用的第一 个方法。在一般情况下,都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置
{ super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获取应用程序中的bn按钮 Button bn = (Button) findViewById(R.id.bn);
后会启动intent对应的第二个Activity。文件
具有自己的生命周期由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态。
当一个Activity实例被创建、销毁或者启动另外 一个Activity时,它在这四种状态之间进行转换,这 种转换的发生依赖于用户程序的动作,如右图所示。
由图中可以看出,Android程序员可以决定一个
TRANSITION PAGE
Chapter 6
Activity界面表现详解
程序中Activity通常的表现形式是一个单独的界面(screen)。每个Activity都是一个单独的类,它扩展
实现了Activity基础类。这个类显示为一个由Views组成的用户界面,并响应事件。
大多数程序有多个Activity。例如,一个文本信息程序有这么几个界面:显示联系人列表界面、写信息 界面、查看信息界面或者设置界面等。每个界面都是一个Activity。切换到另一个界面就是载入一个新的 Activity。某些情况下,一个Activity可能会给前一个Activity返回值——例如,一个让用户选择相片的 Activity会把选择到的相片返回给其调用者。
StartActivity.java的具体实现代码如下: public class StartActivity extends Activity
{@Override
public void onCreate(Bundle savedInstanceState)
// 为bn按钮绑定事件监听器
bn.setOnClickListener(new OnClickListener()
<LinearLayout xmlns:android="http://schemas.android.com/ apk/res/android" android:orientation="vertical"
android:layout_width="fill_parent"
第六章
6.1 Activity基础
6.1.1 Activity的状态及状态间的转换 在Android应用程序中,Activity有如下所示的四种基本状态:
第4 页
Active/Runing 一个新Activity启动 入栈后,它在屏幕最 前端,处于栈的最顶 端,此时它处于可见 并可和用户交互的激 活状态。
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
第 15 页
{
@Override public void onClick(View source)
{wenku.baidu.com
// 创建需要启动的Activity对应的Intent Intent intent = new Intent(StartActivity.this,SecondActivity.class); // 启动intent对应的Activity startActivity(intent); } } } });
第六章
6.1 Activity基础
6.1.3 Activity栈
第8 页
在开发人员自己的Activity中,只是根据需要复写相关的方法,Java的多态性会保证我们自己的 方法被虚拟机调用,这一点与Java中的MIDlet类似。例如如下自定义Activity的代码。 public class OurActivity extends Activity { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onResume();
第 12 页
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
本实例的具体实现流程如下:
第 13 页
(1)首先看第一个Activity的实现过程,文 件main.xml实现了第一个Activity的布局, 这个Activity也是项目的入口Activity。具
android:orientation="vertical"android:layout _width="fill_parent" android:layout_height="fill_parent"> <Button android:id="@+id/bn" android:layout_width="wrap_content"
的实例中已经多次用到了Activity。打开一个新界面后,前一个界面 就被暂停,并放入历史栈中(界面切换历史栈)。Android在历史栈 中保留程序运行产生的所有界面,从第一个到最后一个。使用者可以
回溯前面已经打开的存放在历史栈中的界面,也可以从历史栈中删除
没有界面价值的界面。和J2ME的MIDlet一样,在Android中, Activity的生命周期交给系统统一管理。与MIDlet不同的是,安装在 Android中的所有的Activity都是平等的。
Activity的“生”,但不能决定它的“死”,也就时 说程序员可以启动一个Activity,但是却不能手动地 “结束”一个Activity。
第六章
6.1 Activity基础
6.1.2 Activity栈
第6 页
Android通过Activity栈的方式来管理Activity,一个Activity实例的状态决定它在栈中的位置。处于 前台的Activity总是在栈的顶端,当前台的Activity因为异常或其他原因被销毁时,处于栈第二层的Activity将被
体实现代码如下:
<?xml version="1.0" encoding="utf8"?>
<LinearLayout
xmlns:android="http://schemas.andro id.com/apk/res/android”
android:layout_height="wrap_content"
用户界面等工作。大多数情况下,我们都要在这里从xml中加载设计好的用户界面。例如:
setContentView(R.layout.main); 当然,也可从savedInstanceStat中读取保存到存储设备中的数据,但是需要判断savedInstanceState是 否为null,因为Activity第一次启动时并没有数据被存贮在设备中: if(savedInstanceState!=null){ savedInstanceState.get("Key"); }
此时它依然与窗口管理器
保持连接,系统继续维护 其内部状态,所以它仍然 可见,但它已经失去了焦
点故不可与用户交互。
第六章
6.1 Activity基础
6.1.1 Activity的状态及状态间的转换
第5 页
注意:Activity是所有Android应用程序的根本,所有程序的流程都运行在Activity之中,Activity
Paused 当Activity被另一个透明 或者Dialog样式的 Activity覆盖时的状态。
Stoped 当Activity被另外一 个Activity覆盖、失 去焦点并不可见时处 于Stoped状态。
Killed Activity 被系统杀死回收或者 没有被启动时处于 Killed状态。 在Android应用程序 中,可以调用finish() 函数结束处理Paused 或者stopped状态的 Activity。
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
第 16 页
(3)再看第二个Activity的实现过程,布局文件是 second.xml,具体实现代码如下:
android:layout_width="wrap_content" android:layout_height="wrap_content " android:text="返回"/> <Button android:id="@+id/close" android:layout_width="wrap_content"
激活,上浮到栈顶。当新的Activity启动入栈时,原Activity会被压入到栈的第二层。
Activity在栈中的位置变化反映了它在不同 状态间的转换。Activity的状态与它在栈中的位 置关系如左图所示。由图中可以看出,除了最 顶层即处在Active状态的Activity外,其他的 Activity都有可能在系统内存不足时被回收,一 个Activity的实例越是处在栈的底层,它被系统 回收的可能性越大。系统负责管理栈中Activity 的实例,它根据Activity所处的状态来改变其在
第 11 页
Contents
Part1
Activity基础
Part2
案例6-1:启动、关闭 Activity
Part3
案例6-2:选择您所处的城 市
Part4
综合实例:会员注册系统
第六章
6.2 案例6-1:启动、关闭Activity
6.2.1 设计目标
演示启动Activity的过程,并允许程序在 两个Activity之间切换。
第六章
6.1 Activity基础
6.1.3 Activity栈
第 10 页
(2)protected void onStart():该方法在onCreate()方法之后或者Activity从Stop状态转换为Active状态
时被调用。
(3)protected void onResume():在Activity从Active状态转换到Pause状态时被调用。 (4)protected void onPause():暂停Activity时被回调。 (5)protected void onStop():在Activity从Active状态转换到Stop状态时被调用,一般在此保存 Activity的状态信息。 (6)protected void onDestroy():在Active被结束时调用,它是被结束时调用的最后一个方法,在此 一般实现释放资源功能或清理内存等工作。
栈中的位置。
第六章
6.1 Activity基础
6.1.3 Activity栈
第7 页
在类android.app.Activity中,Android 定义了一系列与生命周期相关的方法。如图 所示,Activity类间接或直接地继承了 Context、ContextWrapper、 ContextThemeWrapper等基类,所以 Activity可以直接调用它们的方法。
android:text="启动第二个Activity"/> </LinearLayout>
第六章
6.2 案例6-1:启动、关闭Activity
6.2.2 具体实现
第 14 页
(2)第一个Activity对应的启动程序文件是 StartActivity.java,功能是载入布局文件 main.xml,并监听用户的单击屏幕操作,单击
第2 页
Contents
Part1
Activity基础
Part2
案例6-1:启动、关闭 Activity
Part3
案例6-2:选择您所处的城 市
Part4
综合实例:会员注册系统
第六章
6.1 Activity基础
第3 页
在Android应用程序中,Activity是最重要、最常见的应用组件之
一。Android应用的一个重要组成部分就是开发Activity,在本书前面
protected void onPause();
protected void onStop(); protected void onDestroy(); }
第六章
6.1 Activity基础
6.1.3 Activity栈
上述方法的具体说明如下:
第9 页
(1)protected void onCreate(Bundle savedInstanceState):这是一个Activity实例被启动时调用的第一 个方法。在一般情况下,都覆盖该方法作为应用程序的一个入口点,在这里做一些初始化数据、设置
{ super.onCreate(savedInstanceState); setContentView(R.layout.main); // 获取应用程序中的bn按钮 Button bn = (Button) findViewById(R.id.bn);
后会启动intent对应的第二个Activity。文件
具有自己的生命周期由系统控制生命周期,程序无法改变,但可以用onSaveInstanceState保存其状态。
当一个Activity实例被创建、销毁或者启动另外 一个Activity时,它在这四种状态之间进行转换,这 种转换的发生依赖于用户程序的动作,如右图所示。
由图中可以看出,Android程序员可以决定一个