将自定义 widget 嵌入 Kuix 界面
将自定义 widget 嵌入 Kuix 界面
在上一篇博客《在 Kuix 框架下绘制自己定义的画布》中,我们谈论了如何在以低级界面实现的 Kuix 框架下绘制自定义画布,以及自定义画布用户事件的加入的问题。我们已经可以使用 Kuix 按照我们的意图来运行自定义的低级界面了。然而关于自定义画布的调用,采用的是显式地 new 的方法:
这样做不足之处有二:其一,我们自定义的 widget 没有返回按钮,没有标题。也就是说,我们的 widget 全屏显示了,而且没有任何按钮来让用户返回上一步操作,而且也没有标题通知用户当前操作所处的位置;其二,Kuix 所有的界面可以使用 Screen 从 xml 配置文件中读取,也就是说我们看到的任何组件,都可以在 xml 文件中进行配置。显式地 new 出 widget,显然与 Kuix 的框架思路背道而驰。
如何将自定义 widget 在 kuix 的 xml 文件中进行配置?如何调用我们自定义的 widget?如何将自定义 widget 嵌入 Kuix 界面,和其他 Kuix 组件(比如按钮等)一起显示?我们就在这篇博客中详细地讨论解决这些问题的步骤。
仍然采用我们在上一篇博客中写的自定义的 widget 的例子,PmapWidget.java 的源代码不变。但是其子类 ChildPmapWidget.java 的源码略有改动。改动后的源代码如下:
定义一个 Frame,MovMapFrame 来负责显示我们自定义的 widget:
在项目的 res 下的 xml 文件夹中 加入 CustomMap.xml,其源代码如下:
然后在我们的 KuixMIDlet 程序中将其父类 org.kalmeo.kuix.core.KuixMIDlet 的 createNewConverterInstance 方法重写:
运行程序,效果图如下:
进入这个界面后,我们按下向上键,或者长按向左键,泡泡已经可以运动了;而当我们按下“上一步”按钮后,也可以返回上一个 Frame 了。