(
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); //在控件之间建立父子关系,
在容器上调用此方法。