初识AndroLua+
来源:互联网 发布:c语言打印倒九九乘法表 编辑:程序博客网 时间:2024/06/11 01:29
AndroLua+是我基于GitHub开源项目优化增强而来的一个工程,主要是效率提高100倍以上,原来Lua调用Java方法速度大约一秒只能200次左右,经过不断优化,现在大约在10000-30000不等,使其可以在实际项目使用而不明显拖慢程序速度。另外一个就是修复其中关于JNI的局部引用溢出问题,就如原作者说的,他做这个只是为了练手ndk开发,所以luajava1.1中的各种bug一概没有修复,说到JNI的局部引用溢出,真是一个非常无语的问题,有时间专门写篇博文唠叨下。最后还有是把Lua从5.1.5升级到现在最新的5.3.3,貌似目前还没有其他安卓工程使用Lua5.3.3。
废话少说,今天我们先来说说用AndroLua+在手机端直接编程,这个需求对于在CSDN上混的可能觉得必要性不大,下一篇将介绍如何在你的工程集成这个引擎实现很多动态功能,这里先熟悉下基本用法。
AndroLua+主程序可以在各大手机应用市场下载,或者用我在GitHub的源码编译。
打开软件主界面非常简单,一个编辑框,有一些默认的代码如下:
require "import"import "android.view.*"import "android.widget.*"第一句是导入我编写的import模块,该模块可以实现高度模拟Java的编程风格,使Java程序员无压力使用Lua脚本,后边两句对于Java程序员应该比较熟悉,导入两个安卓包,和Java不同的是包名需要加引号。
如果现在点运行只能看到一个空白界面,我们需要向他添加一些内容。
我们添加一个编辑框和一个按钮。
layout={ LinearLayout; orientation="vertical"; { EditText; id="edit"; layout_width="fill"; }; { Button; layout_width="fill"; text="按钮"; id="btn"; };};
activity.setContentView(loadlayout(layout))layout={}这个是一个Lua表,loadlayout函数可以把表解析为安卓视图,activity是当前活动的context对象。
看起来是不是很酷,布局表的结构和安卓工程的XML大体相当,都是用嵌套关系表示视图的嵌套。
现在在运行就能看到一个编辑框和一个按钮了,点击按钮没有反应,我们来添加按钮的onClick回调方法。
btn.onClick=function(v) Toast.makeText(activity,edit.Text, Toast.LENGTH_SHORT ).show()end
看起来有点像c#,没关系运行试试,点击按钮后可以toast提示输入框的内容。
一个最简单AndroLua+程序就是这样,可以通过修改布局和回调实现复杂功能。
这里有必要说明几点
1,为什么使用表而不是xml布局。
因为表是Lua原生支持的数据结构,具有结构灵活,解析快的优点,以后讲动态布局时会详细说明。
2,为什么有些Java方法使用和Java不同。
Java的罗嗦是有目共睹的,所以在AndroLua对部分Java方法调用实现了简化,具体包括,
无参数getxxx方法可以简写为o.xxx,
单参数setxxx方法可以简写为o.xxx=x,
list与map对象可以使用下标(仅限字符串与数字)访问数据,a=map["x"]相当于a=map.get("x")也可以进一步简化为a=map.x,
setxxxListener可以简化为o.xxx=function()end。
刚开始你可能不习惯,用多了你就发现这样很酷很方便。
第一次写博文,有点点乱,以后我会逐渐分享AndroLua+在其他方面的使用。
- 初识AndroLua+
- AndroLua, Luajava初步探究
- 初识
- 初识
- 初识
- js初识,博客初识
- TableLayout初识初识
- 初识Blog
- 初识CAA
- 初识JVM
- 初识SmartClient
- 初识HTC
- 初识JSTL
- JMX初识
- 初识Linux
- 初识流媒体
- 初识BREW
- 初识接口
- mtd编译
- 函数声明、函数表达式、匿名函数、立即执行函数
- hdoj 1596 1598 <变形最短路之最优路---贪心--枚举>
- Android从入门到放弃系列--目录
- No new migrations found. Your system is up-to-date.
- 初识AndroLua+
- 二叉堆
- <设计模式7>装饰模式
- 数据结构基础
- 手机组件调用工具类
- 五种编程风格及其使用的抽象
- android从入门到放弃1--Activity&Fragment
- iOS开发~CocoaPods使用详细说明
- MDIO/MDC(SMI)接口