区块链android模块化/可视化编程工具
浏览:651 次

通过在Android中集成Blockly,我们可以实现类似下图所示的拖放模块化/可视化编程,并自动生成JavaScript代码。
集成模式:
;1.将Github中的blocklylib core和blocklylibvertical添加到我们项目的依赖项中。
2.创建一个Activity以继承AbstractBlocklyActivity,并至少实现以下四种方法:
GetBlockDefinitionsJsonPaths()用于获取定义块数据的json文件的路径。返回值是资产目录中文件的路径集合。
GetToolboxContentsXmlPath()用于获取工具箱数据的xml文件路径。返回值是资产目录中文件的路径。加载默认工具箱.xml的示例:
@覆盖
受保护的字符串getToolboxContentsXmlPath(){
;返回“default/toolbox.xml”;
}
 nbsp; ;GetGeneratorsJsPaths()用于获取块生成代码的生成器js文件的路径。返回值是资产目录中文件的路径集合。
私有静态最终列表
//添加自己定义的生成器。默认块的生成器已包含。我们不需要填写
);
@覆盖

受保护列表
;返回JAVASCRIPT_ GENERATORS;
}
;GetCodeGenerationCallback()用于单击“运行/播放”按钮时代码生成后的回调。返回值是回调对象CodeGenerationRequest CodeGeneratorCallback(),它对其重写方法onFinishCodeGeneration中的代码执行所需的操作。例如:
;私有最终CodeGenerationRequest。代码生成器回调mCodeGenerator回调=
 nbsp; ; ; ;新的CodeGenerationRequest。代码生成器回调(){
 nbsp; ; ; ; ; ;@推翻
 nbsp; ; ; ; ; ;public void onFinishCodeGeneration(最终字符串生成代码){
 nbsp; ; ; ; ; ; ; ;Toast.makeText(MainActivity.this,generatedCode,Toast.LNGTH_LONG).show();
 nbsp; ; ; ; ; ; ; ;日志e(标记,“generatedCode:\n”+generatedCode);
 nbsp; ; ; ; ; ;}
 nbsp; ; ; ;};
@非Null
@推翻
;受保护的CodeGenerationRequest。代码生成器回调getCodeGenerationCallback(){

 nbsp; ;返回mCodeGeneratorCallback;
}
简单示例的完整活动代码:
公共类MainActivity扩展了AbstractBlocklyActivity{
;private static final String TAG=“MainActivity”;
;private static final List<String>JAVASCRIPT_ GENERATORS=数组。asList(新字符串[]{
 nbsp; ; ; ;";generators.js“
});
;私有最终CodeGenerationRequest。代码生成器回调mCodeGenerator回调=
 nbsp; ; ; ;新的CodeGenerationRequest。代码生成器回调(){
 nbsp; ; ; ; ; ;@推翻
 nbsp; ; ; ; ; ;public void onFinishCodeGeneration(最终字符串生成代码){
 nbsp; ; ; ; ; ; ; ;Toast.makeText(MainActivity.this,generatedCode,Toast.LNGTH_LONG).show();
 nbsp; ; ; ; ; ; ; ;日志e(标记,“generatedCode:\n”+generatedCode);
 nbsp; ; ; ; ; ;}
