background image

4)设计应用程序 UI

关于术语 视图(

view ”

) :

视图 是概念性的术语,含义是 数据模型在屏幕上的表示 ,实际上由一个或多个从

CcoeControl 派生而来的 UI 控件实现视图,这些控件按层次结构进行组织。父控件通常
被称为容器(

Container),除了用于实现视图的父控件,这种控件被称为对话框

Dialog)。

Avkon

视图切换架构中,术语

Avkon

视图 指的是系统范围内的

View 服务器注册的类,

它控制视图的实例化和析构。

二、常见的

Symbian 应用程序架构:

每种架构都提供了设计应用程序

UI

――

的不同方法

所有的架构都提供了提交 视图 或应用

程序数据可视化表示的方法,同时提供了一种用户用来与架构进行交互的机制。

先简单认识一下:基于对话框的架构和传统的基于

Symbian OS 的架构虽不相同,但和

Avkon 视图切换架构相比,这两种架构彼此更为类似。原因是:
◆它们的特征是它们用于生成视图的 UI 控件类型。
◆架构上几乎相同。也就是说,在这两种设计中,AppUi

类简单地 拥有 视图控件,因此

负责直接管理它们。

◆而 Avkon 视图切换架构从根本上不同于这两种方法,它的视图切换由系统范围地 View
服务器来完成。

1)基于控件的传统 Symbian OS 控件

这些控件总是从

CcoeControl 直接继承,用于表示从 CcoeControl 直接继承的试图类的

标准术语是 容器 。

关于

CcoeControl”:

可以将

CcoeControl 认为是一个空的帐篷。通过继承这个类,可以创建各种各样的自定义

控件,自定义控件的功能和复杂性只受到程序员能力和想象力的限制。这种灵活性的唯一
不利之处是,控件确实类似于一个空帐篷,因为需要进行许多编码工作来提供重要的功能。

在处理视图切换方面,

AppUi 负责处理用户发出的视图切换请求。随后,AppUi 最终的行

为类似于一个巨大的开关,用于根据用户或系统的输入来激活或禁止容器。

注意:

Container 类从 CcoeControl 派生而来,CcoeControl 是所有控件的基类。

在自己的容器类中必须实现从

CcoeControl 中的四个方法,框架将调用所有这些方法:

◆SizeChanged()允许控件响应控件大小的改变
◆Draw()绘制控件
◆CountComponentControls()返回控件拥有的控件数量
◆ComponentControl()对于容器拥有的每一个控件,框架调用该方法获取。

AppUi 类中按照如下代码构造容器:

1.

void ChelloWorldAppUi:::Control()  

2.

{  

3.

BaseControlL();  

4.

IAppContainer=ChelloWorldContainer::NewL(ClientRect());  

5.

IAppContainer->SetMopParent(this); //在控件之间建立父子关系,

 

在容器上调用此方法。