扩展火山平台的功能

1.现在硬件设备发展日新月异,操作系统和环境不断更新,共享资源层出不穷,如果火山平台将自己困于一隅,势必无法适应未来的发展.在架构火山平台时,已经充分考虑了这一点,火山平台本身做到了与具体设备无关,与具体环境无关,与具体目标语言也无关.所有相关的内容,全部由用户自行使用火山程序扩展.

2.这一点反应到火山安卓平台上,就是所有的外部支持类全部由火山程序自行开发,所有的类均可以定义自己的成员、属性、方法、事件等各种对外接口.使用火山类可以封装所有的现有安卓资源及安卓SDK提供的功能.

3.火山平台将用户分为两个层次: 底层和顶层用户,其中底层用户可能会包括专业程序员.底层用户可以参与火山平台的扩展,可以为顶层用户封装外部支持类,而顶层用户不需要学习更多知识,只需要直接使用系统和底层用户封装好的支持类即可.可以看一下火山安卓平台提供的"一步一步跟我学写安卓程序"教程中提供的例程,譬如"step1.v",再对比一下系统封装类源代码,前者明显针对顶层用户,后者明显针对底层用户,前者需要掌握和学习的知识要少得多.

4.我们使用一个例程来说明以上特性,请打开“samples”样例解决方案,查看其中的“系统增强”工程,该工程所提供的程序演示了以下几种扩展火山安卓平台的方法:

A.使用内嵌语句直接封装;

B.封装建立自己的窗口组件;

C.封装使用外部的JAR库;

D.封装使用外部的SO本地库.

下面我们一一讲述.


1.使用内嵌语句直接封装:

打开系统提供的安卓基本类,或者样例程序中的"CanvasView.v"程序,均可以看到大量使用'@'引导的Java本地代码,用户可以通过这些代码直接访问/使用安卓相关资源,譬如"CanvasView.v"中以下这一段代码:

明显地封装了一段Java源代码(定义了一个事件接口),在封装代码中,可以很方便地使用'@'引导符访问外部的火山资源.

具体资料请参见语法手册相应位置.

2.封装建立自己的窗口组件:

在"CanvasView.v"中,封装建立了一个自定义窗口组件"画板":

系统提供的安卓界面设计器能够自动识别并使用用户在程序中提供的自定义窗口组件:

具体窗口组件的封装方法请参见语法手册相应位置.

3.封装使用外部的JAR库:

请查看工程中文件"jar_test.v"中的相关代码:

非常简单,定义一个属性即可.其中封装的"MyJarTest.jar"的源代码见工程目录下的"jar_test"子目录.

封装外部Jar库的方法请参见语法手册相应位置.

4.封装使用外部的SO本地库:

请查看工程中文件"so_test.v"中的相关代码:

同样简单定义一个属性即可,其中封装了来自安卓ndk中的"hello-jni"外部so本地库.

5.下面是该样例程序的运行效果图:

界面上方是自定义组件"画板"的运行效果,下方显示的是来自本地so库的字符串.