第九章 视图和视图架构
1 第九章 视图和视图架构
本章目标 完成本章内容之后我们将能够: 了解Symbian OS视图框架的概念 ⑧掌握与试图相关的API函数 能够编写视图应用程序
2 完成本章内容之后我们将能够: 了解Symbian OS视图框架的概念 掌握与试图相关的API函数 能够编写视图应用程序 本 章 目 标
在本章中,我们将讨论如何通过使用视图架构 实现视图以控制应用程序。描述的方法是用于 Symbian OSv7.0的通用方法
3 在本章中,我们将讨论如何通过使用视图架构 实现视图以控制应用程序。描述的方法是用于 Symbian OSv7.0的通用方法
使用视图控制应用程序 视图架构是Symbian OS整体UI控件框架的一部分,它 允许应用程序提出和接收请求,以显示数据的特定视图。 它也提供不同应用程序用户界面之间的更好集成,使用 户能够以他们正在执行的任务为基础浏览整个UI,而不 是不得不加载不同的应用程序。 这意味着在开发任务驱动的应用程序时,如果UI内 需要使用多个屏幕,例如消息传送/电话簿或日历程序, 在Symbian 0S中实现这种行为的一个方式是使用视图架 构。 例如,视图架构允许在电话簿应用程序Detail视图 中,直接从电子邮件地址创建到消息发送程序的特定联 系人的“新邮件”视图的链接。这使得用户在使用手机 时,能够从一个任务快速切换到另一个任务
4 使用视图控制应用程序 视图架构是Symbian OS整体UI控件框架的一部分,它 允许应用程序提出和接收请求,以显示数据的特定视图。 它也提供不同应用程序用户界面之间的更好集成,使用 户能够以他们正在执行的任务为基础浏览整个UI,而不 是不得不加载不同的应用程序。 这意味着在开发任务驱动的应用程序时,如果UI内 需要使用多个屏幕,例如消息传送/电话簿或日历程序, 在Symbian OS中实现这种行为的一个方式是使用视图架 构。 例如,视图架构允许在电话簿应用程序Detail视图 中,直接从电子邮件地址创建到消息发送程序的特定联 系人的“新邮件”视图的链接。这使得用户在使用手机 时,能够从一个任务快速切换到另一个任务
定义视图 本质上,视图定义为能够显示应用程序数据的类。 视图由应用程序的主用户界面类(app UI)拥有。 这个类派生于CEikAppUi(Uikon核心API提供的框 架)和CCoeAppUi(UI控件框架中的基类): CEikAppUi-一一这个类处理应用程序范围内的程序 用户界面问题,例如工具栏弹出菜单、打开和关 闭文件以及彻底退出应用程序。每个Uikon应用程 序应该从CEikAppUi派生它自己的app UI类,用于 处理应用程序范围内的用户界面细节。 CCoeAppUi- 这是一个通用应用程序用户界面类, 它处理应用程序范围的用户界面,例如按键事件
5 定义视图 本质上,视图定义为能够显示应用程序数据的类。 视图由应用程序的主用户界面类(app UI)拥有。 这个类派生于CEikAppUi(Uikon核心API提供的框 架)和CCoeAppUi(UI控件框架中的基类): ⚫ CEikAppUi——这个类处理应用程序范围内的程序 用户界面问题,例如工具栏弹出菜单、打开和关 闭文件以及彻底退出应用程序。每个Uikon应用程 序应该从CEikAppUi派生它自己的app UI类,用于 处理应用程序范围内的用户界面细节。 ⚫ CCoeAppUi——这是一个通用应用程序用户界面类, 它处理应用程序范围的用户界面,例如按键事件
定义视图 当视图用作控件时,它也需要派生于 CCoeControl,全部控件派生于这个控件基类。 发送和接收显示特定视图请求的客户端/服务器 过程由视图服务器处理,它是视图架构的主要部 分。这个客户端一服务器界面(API)不是直接被应 用程序使用,而是通过app UI框架中CEikAppUi内 的包装器函数(派生于CCoeAppUi)。 因此,对于称做视图的类,也必须从抽象视图界 面MCoeView实现特定的虚函数,并声明视图ID, 因此视图服务器可以识别这个特定视图。 MCoeView:这个类定义视图界面,应该被所有应用 程序视图使用
6 定义视图 当视图用作控件时,它也需要派生于 CCoeControl,全部控件派生于这个控件基类。 发送和接收显示特定视图请求的客户端/服务器 过程由视图服务器处理,它是视图架构的主要部 分。这个客户端一服务器界面(API)不是直接被应 用程序使用,而是通过app UI框架中CEikAppUi内 的包装器函数(派生于CCoeAppUi)。 因此,对于称做视图的类,也必须从抽象视图界 面MCoeView实现特定的虚函数,并声明视图ID, 因此视图服务器可以识别这个特定视图。 MCoeView这个类定义视图界面,应该被所有应用 程序视图使用
使用视图的优势 使用视图架构,为应用程序添加了下列优势: 应用程序/视图切换能力一一 用户可以从一个视图 切换到另一个视图(在同一个应用程序内或在另一 个应用程序内)。 支持保存数据一一 通过向视图服务器注册视图, 视图的数据总是在禁止该视图之前被保存。 支持发送数据 一一通过把消息打包为由UID标识的 说明符,数据可以通过视图服务器从一个视图发 送到另一个视图(在同一个应用程序内或不同的应 用程序内)
7 使用视图的优势 使用视图架构,为应用程序添加了下列优势: ⚫ 应用程序/视图切换能力——用户可以从一个视图 切换到另一个视图(在同一个应用程序内或在另一 个应用程序内)。 ⚫ 支持保存数据——通过向视图服务器注册视图, 视图的数据总是在禁止该视图之前被保存。 ⚫ 支持发送数据——通过把消息打包为由UID标识的 说明符,数据可以通过视图服务器从一个视图发 送到另一个视图(在同一个应用程序内或不同的应 用程序内)
视图架构组件 如图5.1所示,视图架构非常依赖于 Symbian OS的Jikon和CONE组件(对于 Series60,还依赖于Avkon。请参见第3 章)。它们提供了与视图服务器的连接。 在应用程序中实现视图时,需要知道派生于 MCoeView界面和控件类CcoeAppUi(它们都 是CONE的一部分)的函数。也需要知道如何 使用CEikAppUi内包含的视图特定的函数 (它是Jikon的一部分)。 视图架构内的关系如图5.1所示
8 视图架构组件 如图5.1所示,视图架构非常依赖于 Symbian OS的Uikon和CONE组件(对于 Series 60,还依赖于Avkon。请参见第3 章)。它们提供了与视图服务器的连接。 在应用程序中实现视图时,需要知道派生于 MCoeView界面和控件类CcoeAppUi(它们都 是CONE的一部分)的函数。也需要知道如何 使用CEikAppUi内包含的视图特定的函数 (它是Uikon的一部分)。 视图架构内的关系如图5.1所示
视图架构组件 视图架构内的关系如图5.1所示。 CmyDerived CMyDerived 应用程序 AppUi View CEikAppUi Uikon CONE CCoeAppUi CCoeControl MCoeView 视图服务器
9 视图架构组件 视图架构内的关系如图5.1所示。 CmyDerived AppUi CMyDerived 应用程序 View CEikAppUi CCoeAppUi Uikon CONE 视图服务器 CCoeControl MCoeView
视图架构组件 可见,应用程序内的视图从CCoeControl 和CEikAppUi类创建。视图服务器通过CONE 中MCoeView界面知道该视图。 这意味着,构造视图类时,除了标准应用 程序头文件外,还需要包括的头文件有: coeview.h 允许从MCoeView重写虚函 数。 ccoecntrl.h 允许将视图识别为控件。 eikappui.h一允许重写CeikAppUi内的虚 函数
10 视图架构组件 可见,应用程序内的视图从CCoeControl 和CEikAppUi类创建。视图服务器通过CONE 中MCoeView界面知道该视图。 这意味着,构造视图类时,除了标准应用 程序头文件外,还需要包括的头文件有: coeview.h——允许从MCoeView重写虚函 数。 ccoecntrl.h——允许将视图识别为控件。 eikappui.h——允许重写CeikAppUi内的虚 函数