初识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+在其他方面的使用。


  

0 0