理解 Hildon

(作者:徐诚 http://blog.csdn.net/shizhebsys 保留版权)

开发手册:简单应用程序

 

例子代码

简介

本文将使 Moblin 项目开发者对 Hildon 应用程序框架有更好的理解。所有 Moblin GUI 应用程序都是基于 Hildon 应用程序框架。本文介绍基本 Hildon 概念、结构和组成。

本文假设读者已具备下列知识:

  • 基本 Linux 知识
  • 理解 MID
  • 基本 Linux GTK+ 应用程序编程

本文不是完整 Moblin Hildon 开发者编程手册,也不为 Moblin 应用程序开发提供深入编程参考,只是 Hildon 应用程序框架介绍和高级技术纵览,用来对 Moblin 设备开发 GUI 应用程序。如果你希望学习如何在 Hildon 应用程序框架上用 C/C++ 开发,点击: http://v1.moblin.org/toolkits/basicDevGuides/simpleApp/toolkits_DevGds_simpleApp_cApp.php ,用 Python 开发,点击 http://v1.moblin.org/toolkits/basicDevGuides/simpleApp/toolkits_DevGds_simpleApp_pythonApp.php

Hildon 纵览

背景

这里有几类应用程序能在 Moblin 项目中被开发。 Moblin 开发者可开发软件或增进非 PC 设备的 Linux ,例如 MID 和其它消费电子设备。 Moblin 开发者可开发或移植 Linux 应用程序,使用 GUI 连接特定所需手持设备。像 Linux 世界其它 GUI 应用程序一样, Moblin 应用程序界面基于 X 窗口系统。显然, Moblin 应用程序使用 Matchbox 工具管理窗体。 Matchbox 不同于多数其它窗口管理器,因为它同时只显示一个窗口,这是嵌入设备最重要的一点。这些应用程序使用 Hildon 应用程序框架编写,该框架是 GTK+ 的扩展。 Hildon 应用程序框架提供增强的 UI ,以适应手持设备特殊需求。

GTK+ 是用来开发 Linux 应用程序 GUI 的库之一。 GTK 最初源于 GIMP ,即 GNU 图像处理程序,因此称作“ The GIMP Toolkit ”用来标识项目的组织。 GTK+ 是创建 GUI 的多平台工具集,提供完整窗口小部件集合,广泛用在 Linux 桌面区域的项目。它已成为 GNOME 项目的 UI 框架。 GTK+ 是自由软件和 GNU 项目的一部分。 GTK+ 的许可为 GNU LGPL ,允许所有开发者使用它,包含它开发自己的软件,无需任何许可费和版权费。 [1]

虽然 GTK+ 工作在相当多的桌面区域,但它需要为一些小屏幕设备改进, 像 MID 。例如,手持设备可能支持指触操作,通常需要比运行在桌面系统上相同应用程序大的窗口部件和字体。因为用户首选应用程序操作是使用手写笔或手指,该接口需要简单和直接,点击数应该优先,并容易让用户通过手指拖拉操作文字和对象。通过模仿消费电子产品用法, MID 应用程序需要更生动外貌和简单布局,与为桌面系统所写应用程序不同。小屏幕尺寸影响植入程序的最小化按钮、菜单选项及其它 GUI 窗体部件在窗口中呈现,用户期待触摸起来平滑、粗大,并容易在设备的小屏幕上易读。很多需求不能单纯使用 GTK+ 完成,它需要被改进。

Nokia 拥有 Maemo 开源项目,提出增进窗体部件和其它可用库,产生一个基于 GTK+ 的 GUI ,使其更适合手持设备。该增进以及相关工具被称为 Hildon ,它逐渐的组成一个应用程序框架在 Meamo 平台上。 Hildon 是基于 GTK 和某些其它 GNOme 框架的技术。 Hildon 增进 GTK+ 在嵌入 Linux 设备上。增进包括 Hildon 窗体部件、加速改进 Sapwood 主题引擎、图像服务器、任务浏览器、控制面板、状态条、触摸屏输入方法、手写笔支持和高像素屏幕窗口管理 [2]

Maemo 应用程序被建立在 Hildon 框架顶层。简单的应用程序单独连接 Hildon 库、 GTK+ 、 Glib 和 LibOSSO 来使用 GUI 元素。更复杂应用程序依据其需要使用其它服务。例如,某应用程序可能连接 GStreamer 获得多媒体通道,连接 libcurl 获得 HTTP 通道。

使用 Hildon 的应用程序,接收任意 Hildon 窗体部件或 GTK 窗体部件经由 UI 传送的消息。下图说明应用程序、 Hildon 、 GTK+ 、 X lib 和其他 Linux 核心组件在 Moblin 项目中的关系:

 

应用程序可以调用 Hildon API 函数创建特定 Hildon 对象。例如,一个 Hildon 应用程序请求调用“ hildon_window_new() ”函数为自己创建顶层窗口对象。 Hildon 应用程序框架处理请求,并调用底层 GTK 函数创建窗口并呈现,等等。有很多其它选择,应用程序可持续调用 GTK 函数处理 UI 对象。例如, Hildon 应用程序可以调用“ hildon_window_new() ”函数创建按钮控件。在 Hildon 应用程序框架上,按钮将通过 Hildon 呈现,但所有底层操作保持无变化的 GTK 。当我们开始自己的 Moblin 项目,打算使用 Hildon 应用程序框架时, Hildon 将被单独发布,从 Maemo 项目中分离,并可能包含在 GNOME-Mobile 核心服务中。

应用程序框架结构

在 Moblin 的 GUI 应用程序中,底层框架包含一部分 Hildon 应用程序框架。结果, MID 应用程序将共享许多 Nokia N-level handheld 设备的 UI 和特有风格。通常, MID 的 UI 、导航和用户体验在很多方式上不同。例如, Maemo 的导航条在屏幕左边,而 Moblin 导航条在顶部。

下图列出使用 Moblin 的应用程序框架结构:

 

在最初由 Maemo 提供的 Hildon 应用程序框架成员中, Moblin Linux 核心堆栈仅使用其中一部分。有些组件,像任务导航器、 Hildon UI 及控制面板,不被 Moblin 使用。所以,我们不将它们列入本文。查阅 http://maemo.org 可获得这些组件更多信息。

Moblin GUI 应用程序是图 2-2 描述堆栈顶部的成员。这有两个类别:

Moblin 应用程序 :

这是典型 GUI 应用程序,它有特定面貌,或包含某一功能提供给用户,例如浏览器、媒体播放器,等等。

Moblin Applet:

这是图形应用程序,用来配置某个系统设置,通常与底层硬件驱动通信。例如,用户控制音量和混音器的声音程序,等等。

应用程序和 Applet 都从 Hildon 库调用 API 获得它们的 UI 。应用层下,存在 Hildon 应用程序框架和 LibOSSO ,两者均来自 Maemo 。 Moblin 应用程序使用 4 个主要的 Hildon 应用程序框架部件来生成简单、时髦、易手指操作的 MID 界面,即 Hildon 开发库、 UI 主屏幕、 marquee 、状态条。

Hildon :

开发库是 MID 和应用程序产生 GUI 的库的集合。它们基于 GTK+ 库扩展,通过 GTK 窗体部件设计界面。它们是应用程序框架的基本成员,包括 Hildon 窗体部件集合(窗体,菜单,工具条等等), Hildon 桌面, Hildon 文件管理,通用状态条,等等。像积木一样搭建应用程序,并将在下列部分描述。

Home:

这是 Moblin 系统主屏幕,在 MID 启动初时用户所看见的。 Home UI 将通过突变链接所有用户可使用的应用程序和 applet 。通常显示状态信息和屏幕顶部 Marquee 。

Marquee:

这是 Moblin 系统顶部的任务条。 Marquee 和 Windows 任务条一样,将包含一系列插件用来显示应用程序标题、日历、时间、电池 /WiFi 状态等等。

图 2-3. 主屏幕和 Marquee 实例

LibOSSO 是一个重要的库,提供应用程序间通信功能。基本上,它是平台的抽象,为不同应用程序分配执行调用函数库能力,完成特定任务,像打开对话框窗口选择特定的一页,或通过播放器播放声音文件。最主要的功能是著名的 D-Bus 。更多信息点击: http://v1.moblin.org/toolkits/basicDevGuides/mobLinux/toolkits_DevGds_mobLinux_usingLibosso.php 。

Hildon 库介绍

Hildon 有 三大库: libhildon 、 libhildondesktop 和 libhildonfm ,下面将分别详细描述。

Libhildon : Hildon 窗体部件

Libhildon 包含窗体部件集合的库,用以应用程序的图形界面。窗体部件来自 GTK+ 开发库。下面是 Hildon 的 1.0.17 版本提供的主要窗体部件摘要。完整窗体部件参考,查阅: http://maemo.org/api_refs/4.0/hildon/

虽然 libhildon 提供的窗体部件类似于很多 GTK+ 所提供的窗体部件,但他们通常为手持设备和 MID 特殊需求提供特别的增进。例如,很多窗体部件有更丰富图形面貌,大字体,高对比度,这是小屏幕和手指操作所必要的。就是说,大多标准 GTK+ 窗体部件被 Hildon 风格改进,所以更有益于手持设备。 Hildon 规格窗体部件也同样包括标准 GTK+ 窗口控件集合,并增加更多移动应用程序的特殊功能。

LibHildon 窗体部件例子 [3]

名称

描述

HildonWindow

Hildon 框架顶层窗体部件

HildonProgram

Hildon 框架运行的应用程序

HildonColorButton

打开 HildonColorChooserDialog 的按钮

HildonColorChooserDialog

用来选择 HSV 颜色空间的对话框

HildonColorChooser

Hildon 框架顶层窗体部件表现

HildonControlbar

在预先设定范围增加和减少的窗体部件

HildonCalendarPopupr

在弹出日历选择时间的窗体部件

HildonWeekdayPicker

在某一事件发生时选择天数的窗体部件

HildonTimePicker

用户设置时间的弹出对话框窗体部件

HildonNumberEditor

用来输入预先确定范围的数字的窗口部件

HildonRangeEditor

用来询问范围区间的窗体部件

HildonFindToolbar

搜索域工具条

HildonCaption

单子域容器窗体部件,可包含一个标签域和一个操作图标

HildonBanner

用来显示定时通告的窗体部件

HildonNote

询问用户确认的对话框

HildonSortDialog

定义项的排序的窗体部件

HildonFontSelectionDialog

用来选择字体的窗体部件

Hildon-sound

基于 ESD 功能播放声音

Libhildondesktop : Hildon 桌面

Hildon 桌面是手持设备桌面环境。典型 Hildon 桌面包括任务导航器、状态条(例如显示电池或无线信息)和系统菜单,等等。相应的 libhildondesktop 提供必须的项建立自定义桌面对象。在 Moblin 中,主屏幕和 Marquee 开发都使用 libhildondesktop 库。

Hildon 桌面组件 [4]

名称

描述

HildonDesktopHomeItem

用以 HildonHomeArea 子类的基类

HildonDesktopPanelItem

控制项起源的基类

TaskNavigatorItem

任务导航器起源的基类

StatusbarItem

状态条起源的基类

HildonDesktopPopupWindow

开发桌面弹出窗口的基类

HildonDesktopPopupMenu

开发桌面弹出菜单的基类

Libhildonfm : Hildon 文件管理

Hildon 文件管理基于 Gnome VFS ,提供统一机制管理存放在本地驱动器和通过 URL 访问的远程容器中的文件。 Hildon 文件管理库包括一系列易用、内建对象,像标准 Hildon 文件选择对话框、文件容器窗体部件及用来获取文件信息和属性的对象。

Hildon 文件管理组件 [5]

名称

描述

HildonFileSelection

选择文件的容器部件

HildonFileSystemModel

显示文件系统结构的强大窗体部件

HildonFileChooserDialog

基于 GtkFileChooser 选择文件的强大窗体部件

HildonFileDetailsDialog

基于 GtkDialog 显示详细文件信息的对话框窗体部件

HildonFilesystemInfo

查询系统相关文件信息的对象,像统计和显示名称等等

参考文档

下列文档被用来参考写作本文。查阅这些文档获得更多信息:

•  GTK Official Website- http://www.gtk.org

•  Maemo Technology Overview - http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview/Chapter_02_The_GUI_Components_of_maemo.html

•  Maemo API References - http://maemo.org/api_refs/4.0/hildon/index.html

•  Maemo API References - http://maemo.org/api_refs/4.0/libhildondesktop/index.html

•  Maemo API References - https://stage.maemo.org/svn/maemo/projects/haf/doc/api/hildon-fm/index.html

•  Maemo Online Training - Technology Overview http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Technology_Overview

•  Maemo Online Training - Application Development http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Application_Development/index.html

•  Maemo Online Training - Platform Development http://maemo.org/maemo_training_material/maemo4.x/html/maemo_Platform_Development/index.html

•  Maemo 4 Architecture - http://maemo.org/development/documentation/how-tos/4-x/maemo_architecture.html

•  LibOSSO Documentation - http://maemo.org/api_refs/4.0/LibOSSO/index.html

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值