SDL中文论坛
标题:
双朝向模板控件
[打印本页]
作者:
ancientcc
时间:
2016-11-5 20:33
标题:
双朝向模板控件
本帖最后由 ancientcc 于 2017-1-8 21:31 编辑
双朝向指的是竖屏和横屏。双朝向模板控件指的是有那么种模板控件,在竖屏、横屏有不一样布局,虽然两种布局,但处理时用同一C代码。
为什么要存在这种控件?举个例子,对聊天界面,手机上运行时是竖着布局,换到PC/Pad上时是横着布局。虽然两者看去不同,但内中逻辑基本一样,为开发、维护等方便,程序要用同一个窗口类去处理。
操作步骤
针对该模板控件,定义两套cfg。包含在窗口cfg中的是横屏。竖屏放在gui.dat的[portrait]块中。
app启动,加载gui.dat把[portrait]中内容转为C代码,放在settings::portraits变量。
app要显示包含该控件的窗口,在tbuilder_grid::build时,判断某控件是模板控件、当前是竖屏、该控件有双朝向,它就会用settings::portraits中竖屏代替原先横屏。
如何定义cfg
横屏
它定义在包含它的窗口cfg中,不过由于是模板控件,强烈建议把模板控件定义为宏,然后宏定义放在单独的宏文件。举个例子,对内置的聊天模板(_tpl_chat),它定义成宏GUI__CHAT_WIDGET,然后放在<gui>/default/macros/template.cfg。
#define GUI__CHAT_WIDGET
[stacked_widget]
definition="default"
id="_tpl_chat"
......
[/stacked_widget]
#define
复制代码
竖屏
放在<gui>/portrait.cfg。
[portrait]
[stacked_widget]
definition="default"
id="_tpl_chat"
......
[stacked_widget/]
[stacked_widget]
另一个双朝向模板控件
[stacked_widget/]
[/portrait]
复制代码
Studio暂不支持生成双朝向模板控件,可以用以下方法生成这两套cfg。
运行Studio生成横屏时的窗口cfg,从该cfg复制出控件部分,定义成宏,放在template.cfg。
运行Studio生成竖屏时的窗口cfg,从该cfg复制出控件部分,放在portrait.cfg。
欢迎光临 SDL中文论坛 (http://www.libsdl.cn/bbs/)
Powered by Discuz! X3.3