lua学习笔记
来源:互联网 发布:迁都南京 知乎 编辑:程序博客网 时间:2024/06/15 01:16
android 调用Lua, Lua脚本启动Intent
android 中的调用
try {
mLuaState.LdoString(readStream(getResources().openRawResource( R.raw.testLua))); // 找到functionInLuaFile函数
mLuaState.getField(LuaState.LUA_GLOBALSINDEX, "launchIntent");
mLuaState.pushJavaObject(getApplicationContext()); mLuaState.call(1, 0);
} catch (Exception e) {
e.printStackTrace();
}
在Android 工程 res/raw/新建lua脚本 testLua.lua
-- 启动 intent
function launchIntent(context)
-- new 一个java 实例
local intent = luajava.newInstance("android.content.Intent")
intent:addFlags(0x10000000)
intent:setAction("android.intent.action.VIEW")
-- bind 一个Java实例,<span style="background-color: rgb(240, 240, 240); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">调用static 方法</span>
<span style="background-color: rgb(240, 240, 240); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;"> local uri = luajava.bindClass("android.net.Uri")</span>
<span style="background-color: rgb(240, 240, 240); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;"> intent:setData(uri:parse("http://blog.csdn.net/hpccn")) </span>
<span style="background-color: rgb(240, 240, 240); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">context:startActivity(intent); </span>
<span style="background-color: rgb(240, 240, 240); font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;">end</span>
静态类使用
uri = luajava.bindClass("android.net.Uri")
非静态类
intent = luajava.newInstance("android.content.Intent")
在Lua脚本中发启一个Intent, 打开一个网页,就是本人的博客。
android调用Lua。
Lua脚本中实现添加Button,并为Button增加Listener android 中的调用
try {
mLuaState.LdoString(readStream(getResources().openRawResource( R.raw.test))); <span style="background-color: rgb(240, 240, 240);">// 找到functionInLuaFile函数 </span>
mLuaState.getField(LuaState.LUA_GLOBALSINDEX, "addButton");
mLuaState.pushJavaObject(getApplicationContext());// 第一个参数
context mLuaState.pushJavaObject(mLayout);//第二个参数,
Layout mLuaState.call(2, 0);// 2个参数,0个返回值
} catch (Exception e)
<span style="background-color: rgb(240, 240, 240);"> { </span>
<span style="background-color: rgb(240, 240, 240);">e.printStackTrace();</span>
<span style="background-color: rgb(240, 240, 240);"> }</span>
readStream 实现
private String readStream(InputStream is) {
try {
ByteArrayOutputStream bo = new ByteArrayOutputStream();
int i = is.read();
while (i != -1) {
bo.write(i); i = is.read();
}
return bo.toString();
} catch (IOException e) {
Log.e("ReadStream", "读取文件流失败"); return "";
} }
在Android 工程 res/raw/新建lua脚本 testLua.lua
-- lua 实现方法,增加一个Button,点击Button, Toast显示Button标题。
function addButton(context,layout)
btn = luajava.newInstance("android.widget.Button",context)
btn:setText("lua add button ") -- 第一种方法<span style="font-family: Arial;">Listener 实现方法 </span>
button_cb = {
onClick = function(v) print(tostring(v))
local Toast = luajava.bindClass('android.widget.Toast')
Toast:makeText(context, v:getText(), Toast.LENGTH_SHORT):show()
end
}
local listener = luajava.createProxy("android.view.View$OnClickListener", button_cb); --[[ -- 第二种方法Listener实现方法
local listener = luajava.createProxy("android.view.View$OnClickListener", {
onClick = function(v)
print(tostring(v))
local Toast = luajava.bindClass('android.widget.Toast')
Toast:makeText(context, v:getText(), Toast.LENGTH_SHORT):show()
end }) ]]--
btn:setOnClickListener(listener)
layout:addView(btn)
end
写Lua脚本还不习惯,还按 c java 的习惯,在后面加";"
完毕
0 0
- Lua学习笔记(1)
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记一
- Lua学习笔记二
- LUA 学习笔记 01
- LUA 学习笔记 02
- LUA 学习笔记 03
- lua学习笔记
- Lua学习笔记
- LUA学习笔记
- Lua 学习笔记
- lua学习笔记
- Lua学习笔记1
- lua学习笔记
- lua学习笔记(1)
- lua学习笔记(2)
- kernel workqueue 一点使用注意事项
- 用C语言的rand()和srand()产生伪随机数的方法总结
- Android从源码框架思路开始
- 匈牙利算法与增广路径
- Android基础service简介
- lua学习笔记
- JSP get提交中文乱码解决方法
- 【eoeAndroid社区索引】Android二维码知识汇总
- 细数微信QQ支付宝的四大难题?
- Q版人物
- 播放MP3音频和gif动画的一个小模块
- hdoj 2955 01背包变形+简单的概率论
- Version和Build的区别
- mysql服务器拒绝连接