转载请附原文链接: Lua 在 Android 中应用下,具体使用
一、概要
在上一章节中介绍了 Android 中如何引入 Lua ,本章节主要介绍 Lua 在 Android 中的具体使用,本章节主要分为两个部分,第一部分是使用 Lua API 绘制 Android 的 View ,第二部分是介绍学习 Lua 和 Android 之间函数回调及参数传递。
二、调用 Lua 布局 Android View
2.1 一些知识点储备
Lua 程序一般不单独运行,标准的 Lua虚拟机 通过C语言编写的,一般是通过C\C++来拓展Lua的函数,这样接口兼容速度更快。
Lua 虚拟机与 C/C++ 之间的数据交换基本都是通过 Lua 构建虚拟 栈* 来交互的,无论何时 Lua 调用 C,被调用的函数都得到一个新的栈, 这个栈独立于 C 函数本身的栈,也独立于之前的 Lua 栈。它里面包含了Lua传递给 C 函数的所有参数,而 C 函数则把要返回的结果放入这个栈以返回给调用者。即这里记住 Lua 和 C 之间的数据传递交互是通过虚拟栈进行的,主要通过数据的压栈和出栈进行,虚拟栈里面的数据模型如下:
如图 Lua的 栈的访问索引分为正索引和负索引。正的索引指的是栈上的绝对位置(从1开始),负的索引则指从栈顶开始的偏移量,加入栈里有 n 个元素,那么栈顶元素表示为 -1 或者 n。
初始化 Lua 裤子
|
|
2.2 调用 Lua 启动新的 Activity 界面
|
|
这里用到了 luajava
的一个重要方法 newInstance(className, ......)
函数可以创建一个新 java 对象,同时返回一个真正的 java
对象的引用,这样就可以在 Lua 语言中使用语法糖通过面向对象的方式访问该对象,其中第一个参数是要创建的类名,后面的是这个类构造方法所需要的参数。
|
|
经过这两个步骤我们就可以启动 CreateViewAndAnimationActivity
这个 Activity
界面了
2.3 调用 Lua 创建 TextView 添加布局
|
|
|
|
2.4 调用 Lua 执行 Android 属性动画
|
|
|
|
通过上面几个小例子,对通过使用 Lua 代码布局 Android View 有了感性上的认识,更多小栗子请见 AndroidLua。
三、Android 和 Lua 之间多参数传递及回调操作
注:注意 lua 存储数据的结构只有一种就是表。
3.1 Lua 传递参数给 Adroid
|
|
|
|
3.2 Android 传递数据给 Lua
|
|
|
|
3.3 Lua 传递参数给 Android,并带有回调函数,复杂数据结构
|
|
|
|
结语:以上为本次学习内容,如有错误,还望指正,谢谢!