Namespaces

Variants
Actions

Please note that as of October 24, 2014, the Nokia Developer Wiki will no longer be accepting user contributions, including new entries, edits and comments, as we begin transitioning to our new home, in the Windows Phone Development Wiki. We plan to move over the majority of the existing entries over the next few weeks. Thanks for all your past and future contributions.

Symbian UI 架构

From Wiki
Jump to: navigation, search
Article Metadata

文章
User:Kevin8093 在 30 Mar 2009 创建
最后由 hamishwillee 在 15 Dec 2011 编辑

Symbian OS的UI架构主要分成三种:

1. 传统的Symbian系统架构

2. 基于对话框的架构

3. 视图架构


下面将分开讨论三种架构的特点和优缺点:

1.传统的Symbian系统架构

Traditional.jpg

如图所示程序中框架类主要继承自Avkon Framework的CAknApplication, CAknDocument和CAknAppui,另外容器类继承自CONE的CCoeControl。 使用Carbide C++建立一个包含UI的工程,默认的配置中所使用的架构就是这个传统的Symbian系统架构。 其中,CAknApplication是S60应用程序的基类,主要存储应用程序的属性,比如,可以通过重写OpenIniFileLC()的方式存储.ini配置文件等。 CAknDocument为文档类的基类。 CAknAppUi负责处理各种事件,比如HandleCommandL()。 在CMyContainer中可以包含一个或多个控制控件,实现界面的交互,并负责窗体描画事件。

优点是:比较简单和清楚的框架,并且可以加入自定义的控制和交互,比较灵活。 缺点是:没有系统提供的视图的管理方式。

在UIQ中与上述类对应的类是: CQikApplication,CQikDocument,CQikAppUi

2. 基于对话框的架构

Dialog.jpg

这种架构和第一种架构的区别是,使用了一个非模式窗体类CAknDialog来作为主窗体,窗体的设计可以在资源文件中定义,并且可以在不重新编译C++程序的前提下,通过改变资源文件的定义的方式,重新设计窗体。在实践中,这种架构的应用并不多。

3. 视图架构

View.jpg

这种架构的应用最为广泛,在SDK中也有一个叫MyView的例子程序,结合上图仔细读懂这个例子,应该就会清楚很多。

与前两种架构所不同的是,视图类继承自CAknView,并且可以在运行时生成和添加多个视图,并由系统所提供的ViewServer进行管理,在制作稍微复杂一些,尤其是画面比较多的应用程序时,非常有用。但是在Carbide C++中并没有提供默认的工程向导模板,不过可以自己制作一个以方便将来使用。

需要注意的是,与前两种架构不同的是,CMyViewAppUi继承自CAknViewAppUi,他的功能同样是负责接收各种事件,并进行处理,而且可以在这个类中进行各种View的切换和更新激活视图。每个View有自己独立的ID,CAknViewAppUi利用这个ID在ViewServer中注册相关的窗体,并调用不同的窗体,这种架构更面向对象,并且每个视图中封装了属于自己的数据和方法,实现了更灵活的应用。

This page was last modified on 15 December 2011, at 06:31.
463 page views in the last 30 days.

Was this page helpful?

Your feedback about this content is important. Let us know what you think.

 

Thank you!

We appreciate your feedback.

×