注:为个人收集和理解所书,如有误请指出,转载请注明出处
用XRG(XMMI Resource Generator)打开一个工程后,如果是原始release过来的工程,我想在左侧Solution窗口都会有system,default,default_L三项,这三项是Mstar工程的Theme,如果在代码中去找,你会在mae_customization.c中发现,解析资源的地方,ThmAmount的数值为3,0为system,1为default,2自然是dafault_L了。 默认的Theme自然是default里头的资源了,我们称之为Base。
说到这我想对初学者都会冒出一个疑问,default_L是干啥的?别急
在工程中,如果你想添加新的一套UI(或是上边提到的Theme,就这么叫着吧),但是在新的Theme中又有好些资源是和default相同的,这样你就可以创建一个新的Theme,将相同的资源与default共用,default_L就是这么来的,default_L其实就是横屏下的UI。在代码里(Mae_customization.c),你会发现,其实这实现起来很简单,首先获取当前的Theme,然后去获取对应的资源ID,如果有,那就用这个Theme的资源了,如果没找到,就用default里与此ID对应的资源。所谓的共用,其实就是这么来的。当然你也可以将这认为是一种继承关系啦,儿子找不到就找老子,呵呵。有一点需要注意,在新的Theme中资源(如图片)的存放路径需要与base中存放的路径相同,而且在新的Theme中不能创建新的资源ID,所用的ID必须存在于Base中(因为这根本没必要,既然你新的Theme要用到,在Base中自然也要用到),你所要做的便是将要改变的资源在New Theme中替换,将不要的delete。
继续往里面走,在default中会看到所有应用。共用的自然在Common中了,这部分是在开机后就进行加载的。其他的一些是在启动应用的时候再进行加载,看代码,你可以发现在每个App new的开始都会有一个LOAD_APP_RESOURCE(…),这便是资源加载了。如果你正在学HelloWorld程序,又发现资源添加正确但是没法显示,不妨看看Load了吗?
再下一层便是具体的资源的,有String Table,Image,Melody,RS。当然不是每个应用都有这四项,毕竟有相当部分已经存在于Common中了。
String Table:看下Sting ID Manager界面,创建新ID就不说了。说下各项含义,Table里头有Common和No Translation两项。No Translation是用来创建无须翻译的字符串,如QQ,无论你在哪个国家使用手机都是叫QQ。保存在LANGUAGE_NT下。Edit Zone区,Preview是字符串在代码中使用的ID,格式为TXT_{Layout}_{Format}_{ID}。Format格式分为Pure String和 String with % Symbol。如果你的字符串中包含%s,%d,你就选String with % Symbol,在String Param中可以添加内容,替换的便是字符%s或%d。和写C时的一个样。
Ref ID是指这个字符串的关联字符串ID,可以这么理解,如果选了一个比如是TXT_DSL_N_GAME,那么你新建的这个ID就相当是TXT_DSL_N_GAME的引用,修改了TXT_DSL_N_GAME的内容,新建字符串的内容也跟着改变。Complie Options 是指编译开关,可以选多个进行控制,是或的关系,那要想是与的逻辑该怎么办呢,你可以参考图片中的宏的与写法,编辑对应的XML文件,例如:
<compile_option>
<option> __GADGETS_MMI__ && __APP_MMI_FM_RADIO__ </option>
</compile_option>
还有一项是Layout,这个的具体含义可以通过以下步骤知晓:system->global->String Table(右键)->String Layout Manager在这里可以看到所有的字符串Layout类型。可以新建一个或是修改名称,字体的大小,支持的最长字符串长度值(assign max pixel number for a row),至于那个Image,官方这么解释:Sets a gif image(143 * 143) for this layout. When selects the layout, user can see the preview image to know where the string uses in this layout。
如果去查看某一具体的语言内字符串内容,需要注意的是查看所用的长度是否超多了限制,超过的在Length栏会有个感叹号。
Image:里头有三项,system,Predefine,Theme。对于Predefine是内置在手机中,用户可见的图片资源,图片名称可以在Text ID中选择,其他两项对用户是不可见的。
Melody:类似图片,略过。
RS:这个文件涉及的是界面的排版问题,不同的屏大小对应不同的rs文件。里头还包含了定义窗口,Widget等的枚举ID头文件。
最后看看system里面的东东。
PLMN table:这里面定义了运营商的一些信息,如果需要你可以修改,支持两种语言显示。同时每种又分全称及简写。
FONT:你可以添加新的字库,简明说下Create a new Font(来自官方文档)。
ID:inputs the font ID.
Select a Font file: selects a font file for this font. (support bmp format)
Properties:Fixed means the width is fixed. Proportional means the width is not fixed, and the white space will be deleted in CUS file by XRG compiled.
Starting-Row:input the start code for UNICODE, for example:the Chinese character starts by 0x004E.
Width, height: the width/height of a character in this font.
Language: select one language for this font, and user can select other language for this font later.
注意:The font file file must be 256 characters in one line in the bitmap file.
剩下的输入法和手写部分就不写了,因为本人也没搞过。有兴趣的一起交流。
文章评论(0条评论)
登录后参与讨论