初涉Android-blockly
来源:互联网 发布:java程序中使用@的注释 编辑:程序博客网 时间:2024/04/30 14:22
blockly 是 Google开发的一款图形化编程语言。使用拼图代表语句,来完成编写。最小SDK版本是16,在创建项目的时候记得更改一下版本号。
-core 包括模型、控制器、基础的视图类
-vertical包括垂直块试图
-test 测试代码
第一步:
创建一个新的项目,创建一个empty activity。
layout文件使用的是Blockly库里面的布局。[一开始没看懂,后来明白过来了,这步步需要做啥]
第二步:
在新的activity中间的配置文件(AndroidManifest)中加入属性:
第三步:
导入下面位置的4个arr文件。
MyBlocklyApp/blocklylib-core-debug/blocklylib-core-debug.aar
MyBlocklyApp/blocklylib-core-release/blocklylib-core-release.aar
MyBlocklyApp/blocklylib-vertical-debug/blocklylib-vertical-debug.aar
MyBlocklyApp/blocklylib-vertical-release/blocklylib-vertical-release.aar
导入方式:
一定要记得把这四个在dependency界面当中的scope属性都改成对应的debug和release模式,否则的话编译会出现错误:Error: more than one library with package name
—————————————————正式开发分界线————————————————
最简单的开发方法是继承虚拟blockly类: AbstractBlocklyActivity,
[https://github.com/google/blockly-android/blob/master/blocklylib-core/src/main/java/com/google/blockly/android/AbstractBlocklyActivity.java]
下面是一些简单的方法使用介绍,有的类需要override一下。有的还需要加@not null。
1、getToolboxContentsXmlPath()
这个函数返回的是xml文件的地址,就是你配置的界面的地址。
@Override
protected String getToolboxContentsXmlPath() {
return "default/toolbox.xml";
}
Toolbox
1.1 如何编辑toolbox
2、获得代码块定义json文件
返回代码段定义的json路径
@Override
protected List<String> getBlockDefinitionsJsonPaths() {
return Arrays.asList(new String[] {
"default/loop_blocks.json",
"default/math_blocks.json",
"default/variable_blocks.json",
"default/colour_blocks.json"
});
}
2.1可以添加定制代码块
3、获取GENERATORS的地址。
getGeneratorsJsPaths()
返回 assets/目录下的generator.js文件,这个文件中定义了代码块的接口,现在的接口默认javaScript
private static final List<String> JAVASCRIPT_GENERATORS = Arrays.asList(new String[] {
// Custom block generators go here. Default blocks are already included.
});
@Override
protected List<String> getGeneratorsJsPaths() {
return JAVASCRIPT_GENERATORS;
}
3.1 详细的定制模块generator
Note: Learn more about generators in Use Custom Generators.
4、获得代码generation回掉
getCodeGenerationCallback()
用户按下run/play按钮之后,将生成的代码回掉到app中,
CodeGenerationRequest.CodeGeneratorCallback mCodeGeneratorCallback =
new LoggingCodeGeneratorCallback(this, "LoggingTag");
@Override
protected CodeGenerationRequest.CodeGeneratorCallback getCodeGenerationCallback() {
// Uses the same callback for every generation call.
return mCodeGeneratorCallback;
}
5、初始化空白工作区
onInitBlankWorkspace()
While not an abstract method, onInitBlankWorkspace() is currently required to
define the available variables if your app includes
default/variable_blocks.json. Variable support is currently in development.
@Override
protected void onInitBlankWorkspace() {
// Initialize available variable names.
getController().addVariable("item");
}
6、使用Blockly style
最后一步:
在manifest文件中加入代码:
<application ...
android:theme="@style/BlocklyTheme"
/>
会报错,在style文件中加入
<style name="BlocklyAppTheme" parent="BlocklyVerticalTheme">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="blockTextSize">20sp</item>
</style>
如果不做这一步的话,会报一个错误,闪退,调了一天才发现是这个问题。官网也是坑人啊
,文档还是不够详细。
官网给出的项目:Github上下载
下载地址
源代码分为4个部分。
-blocklydemo 样例代码-core 包括模型、控制器、基础的视图类
-vertical包括垂直块试图
-test 测试代码
第一步:
创建一个新的项目,创建一个empty activity。
layout文件使用的是Blockly库里面的布局。[一开始没看懂,后来明白过来了,这步步需要做啥]
第二步:
在新的activity中间的配置文件(AndroidManifest)中加入属性:
android:windowSoftInputMode="stateHidden|adjustPan"
这将会使得键盘在启动的时候是关闭状态,
It will also make sure the workspace pans to show such fields when the keyboard (or other IME) opens.[没看懂]
第三步:
导入下面位置的4个arr文件。
MyBlocklyApp/blocklylib-core-debug/blocklylib-core-debug.aar
MyBlocklyApp/blocklylib-core-release/blocklylib-core-release.aar
MyBlocklyApp/blocklylib-vertical-debug/blocklylib-vertical-debug.aar
MyBlocklyApp/blocklylib-vertical-release/blocklylib-vertical-release.aar
导入方式:
File | Project Structure| 左上角的‘+’按钮|"Import .JAR/.AAR Package" | 在对应位置选择好.arr文件。
一定要记得把这四个在dependency界面当中的scope属性都改成对应的debug和release模式,否则的话编译会出现错误:Error: more than one library with package name
—————————————————正式开发分界线————————————————
最简单的开发方法是继承虚拟blockly类: AbstractBlocklyActivity,
[https://github.com/google/blockly-android/blob/master/blocklylib-core/src/main/java/com/google/blockly/android/AbstractBlocklyActivity.java]
下面是一些简单的方法使用介绍,有的类需要override一下。有的还需要加@not null。
1、getToolboxContentsXmlPath()
这个函数返回的是xml文件的地址,就是你配置的界面的地址。
@Override
protected String getToolboxContentsXmlPath() {
return "default/toolbox.xml";
}
Toolbox
工具箱是一个侧菜单,用户可以在里面创建新的代码块。toolbox.xml文件当中就可以定义侧菜单的风格、内容。toolbox.xml文件放在刚return的目录下。
1.1 如何编辑toolbox
2、获得代码块定义json文件
返回代码段定义的json路径
@Override
protected List<String> getBlockDefinitionsJsonPaths() {
return Arrays.asList(new String[] {
"default/loop_blocks.json",
"default/math_blocks.json",
"default/variable_blocks.json",
"default/colour_blocks.json"
});
}
2.1可以添加定制代码块
3、获取GENERATORS的地址。
getGeneratorsJsPaths()
返回 assets/目录下的generator.js文件,这个文件中定义了代码块的接口,现在的接口默认javaScript
private static final List<String> JAVASCRIPT_GENERATORS = Arrays.asList(new String[] {
// Custom block generators go here. Default blocks are already included.
});
@Override
protected List<String> getGeneratorsJsPaths() {
return JAVASCRIPT_GENERATORS;
}
3.1 详细的定制模块generator
Note: Learn more about generators in Use Custom Generators.
4、获得代码generation回掉
getCodeGenerationCallback()
用户按下run/play按钮之后,将生成的代码回掉到app中,
CodeGenerationRequest.CodeGeneratorCallback mCodeGeneratorCallback =
new LoggingCodeGeneratorCallback(this, "LoggingTag");
@Override
protected CodeGenerationRequest.CodeGeneratorCallback getCodeGenerationCallback() {
// Uses the same callback for every generation call.
return mCodeGeneratorCallback;
}
5、初始化空白工作区
onInitBlankWorkspace()
While not an abstract method, onInitBlankWorkspace() is currently required to
define the available variables if your app includes
default/variable_blocks.json. Variable support is currently in development.
@Override
protected void onInitBlankWorkspace() {
// Initialize available variable names.
getController().addVariable("item");
}
6、使用Blockly style
最后一步:
在manifest文件中加入代码:
<application ...
android:theme="@style/BlocklyTheme"
/>
会报错,在style文件中加入
<style name="BlocklyAppTheme" parent="BlocklyVerticalTheme">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="blockTextSize">20sp</item>
</style>
如果不做这一步的话,会报一个错误,闪退,调了一天才发现是这个问题。官网也是坑人啊
,文档还是不够详细。
0 0
- 初涉Android-blockly
- Android-Blockly 如何编辑toolbox侧边菜单栏
- Android-blockly增加定制代码块(Custom Blocks)
- Blockly在Android中的集成及源码分析
- Blockly概述
- blockly用法探究
- blockly生成javascript
- Google blockly整理
- blockly可视化编程
- 图形化编程语言:Blockly
- 利用python分离blockly源码
- Use Blockly to solve a maze.
- 利用blockly源码测试块生成
- Blockly学习之文档阅读笔记
- 可视化编程工具Blockly 1.0简介
- 初识基于 Web 的可视化编程工具Google Blockly
- Google Blockly安卓原生图形化编程详解
- Blockly之工具Block模块的加入流程
- 第六周 项目6-停车场模拟
- java7 MethodHandle学习笔记
- Java之——实现每天定时执行任务
- jieba分词词性标记含义
- [UESTC 1074]秋实大哥搞算数
- 初涉Android-blockly
- LeetCode 144: Binary Tree Preorder Traversal
- Web WAF2 设置可编辑按钮只在选择复选框时选中当前行
- Activity生命周期
- 2016年弱校联萌 H
- H5测试
- 父子结构(树形结构)下拉框
- ARM处理器系列博客List
- 【SSM 4】Mybatis逆向生成工具