lua学习笔记 2 android调用Lua。Lua脚本中实现添加Button,并为Button增加Listener
16lz
2021-01-25
lua学习笔记: 2 android调用Lua。Lua脚本中实现添加Button,并为Button增加Listener
android 中的调用
try {mLuaState.LdoString(readStream(getResources().openRawResource(R.raw.test)));// 找到functionInLuaFile函数mLuaState.getField(LuaState.LUA_GLOBALSINDEX, "addButton");mLuaState.pushJavaObject(getApplicationContext());// 第一个参数 contextmLuaState.pushJavaObject(mLayout);//第二个参数, LayoutmLuaState.call(2, 0);// 2个参数,0个返回值} catch (Exception e) {e.printStackTrace();}
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 的习惯,在后面加";"
完毕
更多相关文章
- Android(安卓)Handler类消息传递机制(三)不同类中使用Handler
- Mac Android(安卓)Studio处理unable to access android sdk add-
- Android(安卓)onCreate方法被调用两次的解决方法
- Android实现广告图片轮播效果
- Android(安卓)EditText的光标的显示与隐藏
- Android(安卓)-- 获取View宽高
- 浅析Android(安卓)Dialog中setContentView()方法
- android中黑名单的实现
- Android自定义控件 之 轮播图(ViewPager)重点及学习