logo资料库

MTK平台MMI培训教程-(手机开发入门必看).pdf

第1页 / 共108页
第2页 / 共108页
第3页 / 共108页
第4页 / 共108页
第5页 / 共108页
第6页 / 共108页
第7页 / 共108页
第8页 / 共108页
资料共108页,剩余部分请下载后查看
第一章:基础开始
第二章:屏幕
第三章:程序
第四章:资源
第五章:字串资源
第六章:菜单资源
第七章:图像资源
第八章:绘画开始
第九章:文本
第十章:图形
第十一章:图像
第十二章:背景
第十三章:层
第十四章:互动开始
第十五章:控件
第十六章:键盘
第十七章:触摸屏
第十八章:高级控件
第十九章:屏幕模板
第二十章:高级模板
MMI 实例培训教程 www.fugui.name MMI 实例培训教程 MTK 无线通信平台 傅贵 MAIL: mail@fugui.name MSN: fu_gui@msn.com 第 1 页
MMI 实例培训教程 www.fugui.name 第一部份:基础............................................................................................................................................................................. 3 第一章:开始......................................................................................................................................................................... 3 第二章:屏幕......................................................................................................................................................................... 8 第三章:程序....................................................................................................................................................................... 12 第四章:资源....................................................................................................................................................................... 15 第五章:字串资源...............................................................................................................................................................19 第六章:菜单资源...............................................................................................................................................................21 第七章:图像资源...............................................................................................................................................................26 第二部份:绘画...........................................................................................................................................................................28 第八章:开始....................................................................................................................................................................... 28 第九章:文本....................................................................................................................................................................... 32 第十章:图形....................................................................................................................................................................... 36 第十一章:图像 ...................................................................................................................................................................41 第十二章:背景 ...................................................................................................................................................................47 第十三章:层 ....................................................................................................................................................................... 55 第三部份:互动...........................................................................................................................................................................65 第十四章:开始 ...................................................................................................................................................................65 第十五章:控件 ...................................................................................................................................................................70 第十六章:键盘 ...................................................................................................................................................................75 第十七章:触摸屏 ...............................................................................................................................................................81 第十八章:高级控件 ...........................................................................................................................................................86 第十九章:屏幕模板 ...........................................................................................................................................................90 第二十章:高级模板 ...........................................................................................................................................................98 第 2 页 FuGui
MMI 实例培训教程 第一部份:基础 www.fugui.name 第一章:开始 准备 在开始之前,假定你已经能够在手机中看到如下一些画面: Idle MainMenu 图 1.1 Hello, World 学程序都由"Hello, World"开始,我们也这样,下面是我们在手机中"Hello, World"的显示效果: DOS 中的" Hello, World "实现如下: main () { printf ("Hello, World ") ; } 图 1.2 代码 1.1 第 3 页 FuGui
MMI 实例培训教程 www.fugui.name 当然,我们平台所用的操作系统不是 DOS,所以 DOS 下的函数我们基本不能用,包括程序入口方式也得改。 程序入口 嵌入式系统与通用系统不同,我们的应用程序通常与整个系统是固定在一起的。通俗一点说,MMI 就是一个大的程序, 我们写小程序就是大程序的一个个固定分支。要写自己的程序,首先就得在大程序中添加一个新入口。当然,添加新 入口有点麻烦,所以我们就暂时借用现有程序的入口 goto_main_menu,这是主菜单的入口函数(在 MainMenu.c 中), 在 Idle 时按左软键就会进入主菜单。 我们要借用的代码如下(注:红色部份为修改后的代码,后同): void mmi_myapp_entry(void) { //我们的程序由此开始! } void goto_main_menu(void) { //将主菜单切换成我们的程序: mmi_myapp_entry(); return; … … } 下几章会详细介绍怎样添加一个新入口,到时候我们再将此处改回来。 代码 1.2 打印文本 我们用来显示文本串的函数原型如下: void (*gui_print_text) (UI_string_type _text); 这个函数跟 DOS 中的 printf 使用方式差不多: void mmi_myapp_entry(void) { //我们的程序由此开始! gui_print_text(L"Hello, World"); } 因为我们平台默认是基于多国语言的,所以基本上与文本相关的函数都只接受 Uinicode 编码,在这里我们以 L"Hello, World" 方式强制将字串转换为 Uinicode 编码输入。最终运行结果如下(开机以后按左软键): 代码 1.2 第 4 页 FuGui
MMI 实例培训教程 www.fugui.name 可是如图中所示我们看不到任何效果! 为什么会这样?这是因为我们平台里面,当所有绘画动作的代码结束时,如果不强制刷新屏幕是见不到效果的。 图 1.3 刷新屏幕 函数 gui_BLT_double_buffer 用来刷新屏幕: void mmi_myapp_entry(void) { //我们的程序由此开始! gui_print_text(L"Hello, World"); gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1); } 四个参数指明了我们要刷新的范围,一般我们都默认刷新整个屏幕,结果如下: 代码 1.3 "Hello, World"在屏幕的左下角,当然,这样的效果还不能让人满意。 图 1.4 清屏 首先,我们得将背景去掉,因为我系统默认不会做任何事情,所以什么事都得自己来! 第 5 页 FuGui
www.fugui.name MMI 实例培训教程 使用函数 clear_screen 就可以将整个屏幕刷成白色: void mmi_myapp_entry(void) { //我们的程序由此开始! clear_screen(); gui_print_text(L"Hello, World"); gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1); } 结果如下: 代码 1.4 图 1.5 这样好看多了,下一步就是修改文本显示位置以及文本颜色: 文本属性 函数 gui_move_text_cursor 用来设置文本输出的起始位置,函数 gui_set_text_color 用来修改文本颜色: void mmi_myapp_entry(void) { //我们的程序由此开始! clear_screen(); gui_move_text_cursor(50, 100); gui_set_text_color(UI_COLOR_RED); gui_print_text(L"Hello, World"); gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1); } 结果如下: 代码 1.4 第 6 页 FuGui
MMI 实例培训教程 www.fugui.name 因为文本属性设置是针对整个系统的,并且不会有默认值,所以在每次输出文本前我们都要记得重设文本属性。 图 1.5 总结 至此,一个最简单的 MMI 程序已经出来,当然,这只是能够看一下而已,要想让程序正常运行,我们还得进一步完善。 第 7 页 FuGui
MMI 实例培训教程 www.fugui.name 第二章:屏幕 新的屏幕 上一章的屏幕输出后,我们只要稍微等上一会,就会发现屏幕上多出一些不想要的东西,见下图: 图 2.1 仔细看一下就会发现这是 Idle 中的东西,会什么会出现在这里?因为当我们进入一个新的程序时,如果不手动退出上 一个程序,那么上一个程序一直都是活着的,这些多出来的东西就是因为我们没有强制退出 Idle。 退出上一个程序的方法是在进入新程序时调用 EntryNewScreen: void mmi_myapp_entry(void) { EntryNewScreen(MAIN_MENU_SCREENID, NULL, NULL, NULL); clear_screen(); gui_move_text_cursor(50, 100); gui_set_text_color(UI_COLOR_RED); gui_print_text(L"Hello, World"); gui_BLT_double_buffer(0, 0, UI_device_width - 1, UI_device_height - 1); } 全屏显示 代码 2.1 但是调用 EntryNewScreen 后,我们还是会在屏幕中见到一些别的东西,见下图: 第 8 页 FuGui
分享到:
收藏