logo资料库

AWTK开发实践v0.70.pdf

第1页 / 共315页
第2页 / 共315页
第3页 / 共315页
第4页 / 共315页
第5页 / 共315页
第6页 / 共315页
第7页 / 共315页
第8页 / 共315页
资料共315页,剩余部分请下载后查看
AWTK 开发实践 V0.70 目录 1.4 2.1 2.2 2.3 2.4 2.5 2.6 1.1 1.2 1.3 目录 ································································································ 1 第 1 章 初识 AWTK ············································································ 8 简介 ····························································································· 8 特色 ····························································································· 8 AWTK 环境搭建 ············································································· 9 1.3.1 下载 AWTK ············································································· 9 1.3.2 编译 AWTK ············································································· 9 awtk_config.py 文件说明 ································································· 10 1.4.1 渲染方式··············································································· 10 1.4.2 是否支持 png/jpeg 图片 ····························································· 11 1.4.3 是否使用点阵字体 ··································································· 11 1.4.4 是否使用输入法 ······································································ 11 1.4.5 是否有标准的内存分配函数 ······················································· 11 1.4.6 是否支持裸机系统 ··································································· 11 1.4.7 是否在嵌入式系统运行 ···························································· 12 第 2 章 第一个 AWTK 应用 ································································· 13 简介 ··························································································· 13 生成资源文件 ·············································································· 13 2.2.1 Windows 平台 ········································································ 13 Linux 平台 ············································································· 14 2.2.2 编译源代码 ················································································· 14 调试 ··························································································· 15 Visual Studio ·········································································· 15 Visual Studio Code ··································································· 15 目录结构介绍 ·············································································· 16 代码实现····················································································· 17 2.6.1 主函数入口 ··········································································· 17 2.6.2 创建界面··············································································· 19 2.6.3 响应按钮事件 ········································································ 20 2.6.4 响应文本正在改变事件 ···························································· 21 第 3 章 开发基础 ·············································································· 23 简介 ··························································································· 23 主题样式····················································································· 23 3.2.1 主题结构··············································································· 23 3.2.2 主题属性··············································································· 24 3.2.3 控件状态··············································································· 24 3.2.4 为控件指定 style ····································································· 25 3.2.5 每个窗口支持独立的主题 ························································· 26 inline style ············································································· 26 3.2.6 布局管理器 ················································································· 27 3.3.1 为什么需要布局参数 ······························································· 27 2.4.1 2.4.2 3.1 3.2 3.3 1
AWTK 开发实践 4.3 4.4 4.5 3.4 3.5 3.6 4.1 4.2 V0.70 3.3.2 概述 ····················································································· 27 3.3.3 示例 ····················································································· 28 3.3.4 控件自身的布局 ····································································· 29 3.3.5 子控件的布局 ········································································ 31 定时器························································································ 38 idle 定时器 ·················································································· 39 3.5.1 示例 ····················································································· 39 3.5.2 函数 ····················································································· 39 事件处理····················································································· 41 第 4 章 框架控件的开发应用 ······························································· 43 简介 ··························································································· 43 widget ························································································ 44 4.2.1 函数 ····················································································· 44 4.2.2 属性 ····················································································· 46 4.2.3 事件 ····················································································· 47 window_manager ··········································································· 47 4.3.1 函数 ····················································································· 48 4.3.2 属性 ····················································································· 48 窗口 ··························································································· 48 window ················································································· 48 dialog ··················································································· 51 system_bar ············································································· 57 calibration_win ········································································ 58 基本控件····················································································· 60 button ··················································································· 61 label ····················································································· 63 edit ······················································································ 65 image ··················································································· 72 spin_box················································································ 74 combo_box ············································································ 76 color_tile ··············································································· 80 dialog_title ············································································· 82 dialog_client ··········································································· 84 slider ···················································································· 85 progress_bar ··········································································· 89 tab_control ············································································· 92 tab_button ·············································································· 93 tab_button_group ····································································· 96 check_button ·········································································· 97 radio_button ··········································································· 99 dragger ················································································ 101 通用容器控件 ············································································· 103 row ····················································································· 103 column ················································································· 104 4.5.1 4.5.2 4.5.3 4.5.4 4.5.5 4.5.6 4.5.7 4.5.8 4.5.9 4.5.10 4.5.11 4.5.12 4.5.13 4.5.14 4.5.15 4.5.16 4.5.17 4.4.1 4.4.2 4.4.3 4.4.4 4.6.1 4.6.2 4.6 2
AWTK 开发实践 4.7 4.6.3 4.6.4 4.6.5 4.6.6 4.6.7 4.6.8 V0.70 grid ····················································································· 106 view ···················································································· 107 grid_item ·············································································· 108 group_box············································································· 109 app_bar ················································································ 110 button_group ········································································· 111 扩展控件···················································································· 113 canvas_widget ········································································ 114 4.7.1 color_picker ·········································································· 115 4.7.2 gif_image ············································································· 118 4.7.3 guage ·················································································· 119 4.7.4 guage_pointer ········································································ 121 4.7.5 image_animation ····································································· 123 4.7.6 image_value ·········································································· 128 4.7.7 keyboard ·············································································· 130 4.7.8 progress_circle ······································································· 132 4.7.9 rich_text ··············································································· 136 4.7.10 slide_menu ············································································ 138 4.7.11 slide_view············································································· 140 4.7.12 svg_image············································································· 143 4.7.13 switch ·················································································· 145 4.7.14 text_selector ·········································································· 146 4.7.15 time_clock ············································································ 152 4.7.16 digit_clock ············································································ 156 4.7.17 list_view··············································································· 158 4.7.18 list_view_h············································································ 160 4.7.19 list_item ··············································································· 162 4.7.20 scroll_bar·············································································· 164 4.7.21 scroll_view············································································ 168 4.7.22 4.7.23 mutable_image ······································································· 172 4.7.24 mledit ·················································································· 173 4.7.25 line_number ·········································································· 176 slide_indicator ········································································ 179 4.7.26 overlay ················································································· 183 4.7.27 hscroll_label ·········································································· 185 4.7.28 自定义控件 ················································································ 189 4.8.1 注册控件·············································································· 189 4.8.2 创建控件·············································································· 189 4.8.3 使用控件·············································································· 196 第 5 章 动画 ·················································································· 198 简介 ·························································································· 198 窗口动画···················································································· 198 5.2.1 动画类型·············································································· 198 5.2.2 使用方法·············································································· 198 4.8 5.1 5.2 3
AWTK 开发实践 5.3 6.1 6.2 V0.70 5.2.3 动画参数·············································································· 199 5.2.4 示例 ···················································································· 199 5.2.5 自定义动画 ·········································································· 200 控件动画···················································································· 200 5.3.1 动画类型·············································································· 200 5.3.2 特色 ···················································································· 201 5.3.3 函数 ···················································································· 201 XML 参数 ············································································ 205 5.3.4 5.3.5 插值算法名称(easing) ·························································· 206 5.3.6 示例 ···················································································· 207 第 6 章 画布 ·················································································· 209 普通画布···················································································· 209 6.1.1 简介 ···················································································· 209 6.1.2 函数 ···················································································· 209 6.1.3 属性 ···················································································· 210 6.1.4 示例 ···················································································· 210 矢量图画布 ················································································ 210 6.2.1 简介 ···················································································· 210 6.2.2 函数 ···················································································· 211 6.2.3 属性 ···················································································· 212 6.2.4 示例 ···················································································· 212 第 7 章 输入法 ··············································································· 215 简介 ·························································································· 215 软键盘······················································································· 215 键盘类型···················································································· 215 自定义键盘 ················································································ 216 加入中文输入法 ·········································································· 218 示例 ·························································································· 219 第 8 章 多国语言互译 ······································································ 221 简介 ·························································································· 221 语言文件介绍 ············································································· 221 文本翻译···················································································· 222 XML 上文本互译 ··································································· 222 8.3.1 C 代码上文本互译 ·································································· 222 8.3.2 8.3.3 如何实时切换语言 ································································· 222 图片翻译···················································································· 223 第 9 章 深入理解 AWTK ·································································· 224 简介 ·························································································· 224 资源管理器 ················································································ 224 9.2.1 资源的生成 ·········································································· 225 9.2.2 相关工具·············································································· 225 9.2.3 初始化················································································· 225 9.2.4 使用方法·············································································· 226 9.2.5 资源的名称 ·········································································· 227 7.1 7.2 7.3 7.4 7.5 7.6 8.1 8.2 8.3 8.4 9.1 9.2 4
AWTK 开发实践 10.1 10.2 9.3 9.4 V0.70 LCD 旋转 ··················································································· 228 9.3.1 使用方法·············································································· 228 LCD 实现方式对旋转的影响 ····················································· 228 9.3.2 API 注释格式 ·············································································· 229 9.4.1 类的注释·············································································· 229 9.4.2 类成员变量注释 ···································································· 229 9.4.3 函数的注释 ·········································································· 230 9.4.4 枚举的注释 ·········································································· 231 第 10 章 经典案例 ··········································································· 233 简介 ·························································································· 233 仪表监控系统 ············································································· 233 10.2.1 功能详解·············································································· 233 10.2.2 应用实现·············································································· 233 洁净新风系统 ············································································· 237 10.3.1 功能详解·············································································· 237 10.3.2 应用实现·············································································· 238 炫酷图表···················································································· 249 10.4.1 功能详解·············································································· 249 10.4.2 应用实现·············································································· 249 音乐播放器 ················································································ 263 10.5.1 功能详解·············································································· 263 10.5.2 应用实现·············································································· 264 智能手表···················································································· 273 10.6.1 功能详解·············································································· 273 10.6.2 应用实现·············································································· 273 附录 A 把应用迁移到 AWorks ···························································· 290 建立工程···················································································· 290 编译工程···················································································· 291 如何升级 AWTK ·········································································· 294 附录 B 把应用迁移到嵌入式 Linux ····················································· 295 附录 C 字体裁剪 ············································································ 297 默认字体···················································································· 297 裁剪字体···················································································· 297 附录 D 启用鼠标指针 ······································································ 298 demo 启用鼠标指针 ······································································ 298 在应用程序启用鼠标指针 ······························································ 298 指针图片的要求 ·········································································· 298 附录 E 基本函数库 ········································································· 299 memory······················································································ 299 E.1.1 函数 ···················································································· 299 E.1.2 示例 ···················································································· 300 rgba ·························································································· 300 E.2.1 属性 ···················································································· 300 color ························································································· 300 D.1 D.2 D.3 A.1 A.2 A.3 E.2 E.3 C.1 C.2 10.3 10.4 10.5 10.6 E.1 5
AWTK 开发实践 V0.70 E.3.1 函数 ···················································································· 300 E.3.2 属性 ···················································································· 300 E.3.3 示例 ···················································································· 300 color_parse·················································································· 301 E.4.1 函数 ···················································································· 301 E.4.2 示例 ···················································································· 301 value ························································································· 301 E.5.1 函数 ···················································································· 301 E.5.2 示例 ···················································································· 302 str ····························································································· 302 E.6.1 函数 ···················································································· 302 E.6.2 属性 ···················································································· 303 E.6.3 示例 ···················································································· 303 wstr ·························································································· 304 E.7.1 函数 ···················································································· 304 E.7.2 属性 ···················································································· 304 E.7.3 示例 ···················································································· 305 darray ························································································ 305 E.8.1 函数 ···················································································· 305 E.8.2 属性 ···················································································· 305 E.8.3 示例 ···················································································· 306 wbuffer ······················································································ 306 E.9.1 函数 ···················································································· 306 E.9.2 属性 ···················································································· 306 E.9.3 示例 ···················································································· 307 rbuffer ······················································································· 307 E.10.1 函数 ···················································································· 307 E.10.2 属性 ···················································································· 307 E.10.3 示例 ···················································································· 308 date_time ···················································································· 308 E.11.1 函数 ···················································································· 308 E.11.2 属性 ···················································································· 308 E.11.3 示例 ···················································································· 309 event ························································································· 309 E.12.1 函数 ···················································································· 309 E.12.2 属性 ···················································································· 309 E.12.3 示例 ···················································································· 309 slist ··························································································· 309 E.13.1 函数 ···················································································· 309 E.13.2 属性 ···················································································· 310 E.13.3 示例 ···················································································· 310 system_info ················································································· 310 E.14.1 函数 ···················································································· 310 E.14.2 属性 ···················································································· 311 E.4 E.5 E.6 E.7 E.8 E.9 E.10 E.11 E.12 E.13 E.14 6
AWTK 开发实践 E.15 V0.70 tk_thread ···················································································· 311 E.15.1 函数 ···················································································· 311 E.15.2 示例 ···················································································· 312 tk_mutex ···················································································· 312 E.16.1 函数 ···················································································· 312 E.16.2 示例 ···················································································· 312 tk_cond_var················································································· 312 E.17.1 函数 ···················································································· 312 附录 F 修订历史 ············································································· 314 E.16 E.17 7
AWTK 开发实践 V0.70 第1章 初识 AWTK ✍本章导读 随着手机、智能手表等便携式设备的普及,用户对 GUI 的要求越来越高,嵌入式系统 对 GUI 的需求也越来越迫切,本章将为大家介绍一个轻型、占用资源少、高性能、高可靠、 便于移植、可配置及美观的 GUI 编程框架。 1.1 简介 AWTK(Toolkit AnyWhere)是一套基于 C 语言开发的 GUI 框架,目前支持的平台有嵌 入式、Linux、Mac OS X、Windows,后续会支持 Android、iOS 平台下的 APP,以及 2D 游 戏的开发。 1.2 特色 1. 小巧。在精简配置下,不依赖第三方软件包,仅需要 8K RAM+32K FLASH 即可开 发一些简单的图形应用程序。 2. 高效。采用脏矩形裁剪算法,每次只绘制和更新变化的部分,极大提高运行效率。 3. 稳定。通过良好的架构设计、编程风格、单元测试、动态(valgrind)检查和 Code Review 保证其运行的稳定性。 4. 丰富的 GUI 组件。提供窗口、对话框和各种常用的组件(用户可以配置自己需要 的组件,降低对运行环境的要求)。 5. 支持多种字体格式。内置位图字体(并提供转换工具),也可以使用 stb_truetype 或 freetype 加载 ttf 字体。 6. 支持多种图片格式。内置位图图片(并提供转换工具),也可以使用 stb_image 加 载 png/jpg 等格式的图片。 7. 紧凑的二进制界面描述格式。可以使用手工编辑的 XML 格式的界面描述文件,也 可以使用 Qt Designer 设计界面,然后转换成紧凑的二进制界面描述格式文件,提 高运行效率,减小内存开销。 8. 支持主题并采用紧凑的二进制格式。开发时使用 XML 格式描述主题,然后转换成 紧凑的二进制格式,提高运行效率,减小内存开销。 9. 支持裸系统,无需 OS 和文件系统。字体、图片、主题和界面描述数据都编译到代 码中,以常量数据的形式存放,运行时无需加载到内存。 10. 内置 nanovg 实现高质量的矢量动画。 11. 支持窗口动画、控件动画、滑动动画和高清 LCD 等现代 GUI 常见特性。 12. 支持国际化(Unicode、字符串翻译和输入法等)。 13. 可移植。支持移植到各种 RTOS 和嵌入式 Linux 系统,并通过 SDL 在各种流行的 PC/手机系统上运行。 14. 脚本化。从 API 注释中提取 API 的描述信息,通过这些信息可以自动生成各种脚 本的绑定代码。 15. 支持硬件 2D 加速(目前支持 STM32 的 DMA2D 和 NXP 的 PXP)和 GPU 加速 (OpenGL/OpenGLES/DirectX/Metal),充分挖掘硬件潜能。 16. 采用 LGPL 协议开源发布,在商业软件中使用时无需付费。 8
分享到:
收藏