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 的习惯,在后面加";"


完毕

更多相关文章

  1. Android(安卓)Handler类消息传递机制(三)不同类中使用Handler
  2. Mac Android(安卓)Studio处理unable to access android sdk add-
  3. Android(安卓)onCreate方法被调用两次的解决方法
  4. Android实现广告图片轮播效果
  5. Android(安卓)EditText的光标的显示与隐藏
  6. Android(安卓)-- 获取View宽高
  7. 浅析Android(安卓)Dialog中setContentView()方法
  8. android中黑名单的实现
  9. Android自定义控件 之 轮播图(ViewPager)重点及学习

随机推荐

  1. 关于ExpandableListView用法的一个简单小
  2. Android与iOS性能差距的个人见解
  3. Android 图片压缩详解
  4. Handle机制详解
  5. 深入Android的消息机制源码详解~Handler,M
  6. Android线程模型(Painless Threading)
  7. Android安卓系统提示应用程序未安装的解
  8. 《Android3D游戏开发技术详解与典型案例
  9. android下jni开发
  10. Android(安卓)事件拦截机制一种粗鄙的解