《使用XML的方式添加资源》由会员分享,可在线阅读,更多相关《使用XML的方式添加资源(3页珍藏版)》请在金锄头文库上搜索。
1、MTK 10A 的代码规范里使用 XML 的方式添加资源大大简化了对资源的维护方式.1. 添加图片资源 . 在对应的 app.res 文件中 添加IMAGE id二图片 ID 名路径2. 添加字串资源。 在对应的 app.res 文件中 添加STRING id=字串 ID 名字串 3. 添加菜单资源。在对应的 app.res 文件中 添加调用RESGEN编译时会用到resgen_xml,exe将xml文件编译成响应的资 源文件和头文件。使用资源时包含相应的头文件即可。例如编辑主菜单请到 MainMenuRes.res 中。1、文件结构目录一:plutommiMMIFirstApp目录二:plu
2、tommiMMIFirstAppFirstAppInc (该结构未改变) 文件列表:Firs tAppDefs.h :用于存放本程序所需要的类型,结构,常量的定义FirstAppProt.h:用于存放本程序中的所有函数声明,但此文件只被本文件的源 程序所加载FirstAppGprot.h:也是用于存放函数声明,但是此文件是用于别的程序加载, 即此文件中的函数声明的都是对外的接口FirstAppResDef.h:用于存放本资源ID的定义接口目录三:plutommiMMIFirstAppFirstAppSrc (该结构未改变) FirstAppSrc.c 程序的主源文件目录四:plutommiMM
3、IFirstAppFirstAppRes (新的目录)Firs tApp.res:资源文件定义,包含字串、图片、菜单、屏幕等的定义,该文件 实际为一个标准 xml 文件ref_list_FirstApp. txt:该模块多国语言字串定义(目前发现该文件并未生效, 不知道是否是设置问题)2、将文件加入项目修改makeplutommimmi_app下的三个文件:1)mmi_app.lis:此文件用来申明MMI所要编译的所有源文件,添加如下一行: plutommiMMIFirstAppFirstAppSrcFirstAppSrc.c2)mmi_app.inc:此文件用来指明MMI所有头文件所在目录,
4、同样添加: plutommiMMIFirstAppFirstAppInc3)mmi_app.pth:此文件用来指明MMI所有源文件所在目录,添加: plutommiMMIFirstAppFirstAppSrc4)在 plutommiCustomerResGeneratorMakeFile 文件中添加如下一行: -I ././MMI/FirstApp/FirstAppInc 3、应用程序 ID 定义 1)在基础 ID 统一定义文件 plutommiMMIIncmmi_res_range_def.h (原来为 MMIDa taType.h )中找到如下定义块:RESOURCE_BASE_ENUM_
5、BEGIN()RESOURCE_BASE_ENUM_END()在其中添加:#ifdef _MMI_FIRSTAPP_RESOURCE_BASE_RANGE(FIRSTAPP, 50),#endif2)找到如下定义块:RESOURCE_BASE_TABLE_BEGIN()RESOURCE_BASE_TABLE_END() 在块中间末尾位置添加:#ifdef _MMI_FIRSTAPP_#define FIRSTAPP_BASE (U16) GET_RESOURCE_BASE(APP_FIRSTAPP) #define FIRSTAPP_BASE_MAX (U16) GET_RESOURCE_MA
6、X(APP_FIRSTAPP) RESOURCE_BASE_TABLE_ITEM_PATH(APP_FIRSTAPP,.MMIFirs tAppFirs tAppRes)/这里较之前有所变化 #endif4、字串、图片、屏幕资源的添加先来说字串、图片、屏幕资源ID的添加。10A版本中对资源定义的改动比较大, 稍微对比一下新老版本,你会发现很多原来很大的文件变小了,而多出来了很 多.res后缀的文件,这就是新版本的资源定义文件。10A版本仍部分保持了老版 本的定义方式,不过笔者建议采用新版本的方式来定义资源,而且与之前相比新 版本的资源定义要方便不少。读者可以随便找一个res文件,这个res文件
7、类似 与xml文件,不过你可以在其中使用一些C的预处理命令和注释。使用这种方式 你不需要自己去定义res_app_firstapp.c,系统会在这个文件中搜索ID并自动 生成名为 mmi_rp_app_firstapp_def.h 和 mmi_rp_app_firstapp.c 的文件,并在 后者中定义对应的 populate 函数。至于 res 文件中各标签和其属性定义,请参 看 MTK 官方文档 10A_MMI_Resource_Training.pdf。5、菜单添加 菜单由于有上下级关系,定义要相对复杂些,这里先介绍几个标签:MENU、MENUITEM和MENUITEM_ID。MENU是
8、用来定义菜单树的标签,MENUITEM是用来定 义单个菜单项的标签, MENUITEM_ID 是用来在 MENU 树中安置菜单项的标签。下 面来讨论菜单的定义。新版本中菜单的定义方式有很多种,现介绍最常用的三种方式,其它方式请读者 参看上面给出的 MTK 官方文档。方法一:MENU中包含MENUITEM_ID方式定义这种方式采用如下格式:SUBMENU1 SUBMENU2采用这种方式要在MENU体外申明对应MENUITEM的定义,可以放在引用MENU之 前也可在其后,但 MENU 中 MENUITEM_ID 包含的内容必须是已定义的 MENUITEM 的ID,如果不存在系统将会将该菜单忽略。另
9、外提一点,为了和先前的版本兼 容, MTK提供了OID:前缀,用来引用原先在c文件中定义的菜单ID,使用方法 是将 其放在标签 对之间 即可,例 如: 0ID:SUBMENU3。不过引用前请使用INCLUDE file二XXXResDef.h/引用你 ID 所在文件,将其至于!Include Area下。 方法二:直接将MENUITEM定义在MENU中,格式如下:SUBMENU1SUBMENU2这种方式不需要在MENU体外定义对应MENUITEM,只需要放在MENU标签内同时 定义MENUITEM信息即可。方法三:嵌套MENU,格式如下: 采用这种方式使得菜单的定义一次完成,也易于理解,但是当属性较多层次较深 的时候可能显得较乱。这种方式是直观的MENU树表现方式,显示了子菜单与父 级菜单的对应关系。有些读者可能对MENU和MENUITEM有些迷茫,笔者认为,在 大部分时候MENU和MENUITEM可以通用,你可以把他们看成一种东西(MENU)。 你可以将方法三第二行替换成方法一或方法二的形式。不过如果有SUBMENU1有 子菜单的时候,方法三可以直接嵌套在对应MENU体之中,而方法一或方法二则 需在MENU方法体外做如下定义: 以上三种方法可以根据需要混合使用。最后为了完整实现菜单功能,别忘了添加 对应菜单的 highlight 和 hint 函数。