将自定义 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 了。

posted @ 2009-12-22 16:15  Defonds  阅读(21)  评论(0编辑  收藏  举报