首页 > 编程源码 > 【CDK】AndLua+入门教程1

【CDK】AndLua+入门教程1

楼主:采花贼ヾ? [3级] · 2020-1-8 ·  浏览22521 · 编程源码 · ID:

首先我们先来了解AndLua+

关于AndLua+是基于开源项目lua开发的轻型脚本编程工具,使用简洁优美的lua语言,简化了繁琐的Java语句,同时支持使用大部分安卓api,免安装调试,使你在手机上开发更加轻松快捷,程序申请的权限是为了你编写程序使用,请大家放心使用。

软件的基本操作

工程结构
init.lua 工程配置文件
main,lua 工程主入口文件
layout.aly 工程默认创建的布局文件

基本功能
左箭头 撤销:撤销输入的内容
保存:保存当前文件
新建:新建lua代码文件或者aly布局文件,代码文件与布局文件文件名不可以相同
编译:把当前文件编译为luac文件,通常用不到
打开:在工程列表打开工程
打包:将当前工程编译为apk,默认使用debug签名
新建:新建一个工程
备份:将当前工程备份为AndLua+文件
编辑:编辑当前工程的属性,如 名称 权限等
格式化:重新缩进当前文件使其更加便于阅读
导入分析:分析当前文件及引用文件需要导入的java类
查错:检查当前文件是否有语法错误
布局助手:在编辑器打开aly文件时用于设计布局,目前功能尚不完善
(楼层继续更新,认证楼主✔)

━━━━━━━━━━━━━━━━━
❧━━━━━━━━━━━━━━━━
喜欢给个关注吧!路过回复一下,谢谢!
喜欢给个关注吧!路过回复一下,谢谢!
喜欢给个关注吧!路过回复一下,谢谢!
┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅┅

快关注楼主吧,关注楼主=关注了全网精品[揪耳朵]
点击楼主头像就以关注啦!爱你呢

粉丝暴富的魔法~
  ∧_∧
(。・ω・。)つ━☆..  ・*。
  ⊂   ノ      ・゜+.
 しーJ     °。+ *´¨)
   ***      .· ´¸.·*´¨) ¸.·*¨)
         *** (¸.·´ (¸.·’*


- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者采花贼ヾ?流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/21940.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
207条回复 |  最后回复于2020-3-29

采花贼ヾ? [3级]

使用事件

创建事件处理函数
function click(s)
print("点击")
end
把函数添加到事件接口
listener=View.OnClickListener{onClick = click}
把接口注册到组件
button.setOnClickListener(listener)

也可以使用匿名函数
button.setOnClickListener(View.OnClickListener {onClick = function(s)
print("点击")
end
})

onxxx事件可以简写
button.onClick=function(v)
print(v)
end
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

回调方法在活动文件添加以下函数,这些函数可以在活动的特定状态执行。function main(...) --...:newActivity传递过来的参数。 print("入口函数",...)endfunction onCreate() print("窗口创建")endfunction onStart() print("活动开始")endfunction onResume() print("返回程序")endfunction onPause() print("活动暂停")endfunction onStop() print("活动停止")endfunction onDestroy() print("程序已退出")endfunction onResult(name,...) --name:返回的活动名称 --...:返回的参数 print("返回活动",name,...)endfunction onCreateOptionsMenu(menu) --menu:选项菜单。 menu.add("菜单")endfunction onOptionsItemSelected(item) --item:选中的菜单项 print(item.Title)endfunction onConfigurationChanged(config) --config:配置信息 print("屏幕方向关闭")endfunction onKeyDown(keycode,event) --keycode:键值 --event:事件 print("按键按下",keycode)endfunction onKeyUp(keycode,event) --keycode:键值 --event:事件 print("按键抬起",keycode)endfunction onKeyLongPress(keycode,event) --keycode:键值 --event:事件 print("按键长按",keycode)endfunction onTouchEvent(event) --event:事件 print("触摸事件",event)end
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

使用数组

array=float{1,2,3}
或者
array=int[10]
a=array[0]
array[0]=4
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

使用线程

需导入import模块,参看thread,timer与task函数说明。
线程中使用独立环境运行,不能使用外部变量与函数,需要使用参数和回调与外部交互。
任务

task(str,args,callback)

str 为任务执行代码,args 为参数,callback 为回调函数,任务返回值将传递到回调方法
线程

t=thread(str,args)

str 为线程中执行的代码,args 为初始传入参数
调用线程中方法
call(t,fn,args)
t 为线程,fn 为方法名称,args 为参数
设置线程变量
set(t,fn,arg)
t 为线程,fn 为变量名称,arg 为变量值
线程调用主线程中方法
call(fn,args)
fn 为方法名称,args 为参数
线程设置主线程变量
set(fn,arg)
fn 为变量名称,arg 为变量值

注. 参数类型为 字符串,数值,Java对象,布尔值与nil
线程要使用quit结束线程。

t=timer(func,delay,period,args)

func 为定时器执行的函数,delay 为定时器延时,period 为定时器间隔,args 为初始化参数
t.Enable=false 暂停定时器
t.Enable=true 启动定时器
t.stop() 停止定时器

注意:定时器函数定义run函数时定时器重复执行run函数,否则重复执行构建时的func函数
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

使用布局表

使用布局表须导入android.view与android.widget包。
require "import"
import "android.widget.*"
import "android.view.*"
布局表格式
layout={
控件类名称,
id=控件名称,
属性=值,
{
子控件类名称,
id=控件名称,
属性=值,
}
}

例如:
layout={
LinearLayout,--视图类名称
id="linear",--视图ID,可以在loadlayout后直接使用
orientation="vertical",--属性与值
{
TextView,--子视图类名称
text="hello AndLua++",--属性与值
layout_width="fill"--布局属性
},
}
使用loadlayout函数解析布局表生成布局。
activity.setContentView(loadlayout(layout))
也可以简化为:
activity.setContentView(layout)
如果使用单独文件布局(比如有个layout.aly布局文件)也可以简写为:
activity.setContentView("layout")
此时不用导入布局文件。

布局表支持大全部安卓控件属性,
与安卓XML布局文件的不同点:
id表示在Lua中变量的名称,而不是安卓的可以findbyid的数字id。
ImageView的src属性是当前目录图片名称或绝对文件路径图片或网络上的图片,
layout_width与layout_height的值支持fill与wrap简写,
onClick值为lua函数或java onClick接口或他们的全局变量名称,
背景background支持背景图片,背景色与LuaDrawable自绘制背景,背景图片参数为是当前目录图片名称或绝对文件路径图片或网络上的图片,颜色同backgroundColor,自绘制背景参数为绘制函数或绘制函数的全局变量名称,
控件背景色使用backgroundColor设置,值为"十六进制颜色值"。
尺寸单位支持 px,dp,sp,in,mm,%w,%h。
其他参考loadlayout与loadbitmap
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

2D绘图。
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

Lua类型与Java类型

在大多数情况下AndLua+可以很好的处理Lua与Java类型之间的自动转换,但是Java的数值类型有多种(double,float,long,int,short,byte),而Lua只有number,在必要的情况下可以使用类型的强制转换。
i=int(10)
i就是一个Java的int类型数据
d=double(10)
d是一个Java的double类型
在调用Java方法时AndLua+可以自动将Lua的table转换成Java的array,Map或interface
Map类型可以像使用Lua表一样简便。
map=HashMap{a=1,b=2}
print(map.a)
map.a=3
取长度运算符#可以获取Java中array,List,Map,Set,String的长度。
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

canvas模块
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

OpenGL模块
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...

采花贼ヾ? [3级]

http同步网络模块

body,cookie,code,headers=http.get(url [,cookie,ua,header])
body,cookie,code,headers=http.post(url ,postdata [,cookie,ua,header])
code,headers=http.download(url [,cookie,ua,ref,header])
body,cookie,code,headers=http.upload(url ,datas ,files [,cookie,ua,header])
参数说明
url 网址
postdata post的字符串或字符串数据组表
datas upload的字符串数据组表
files upload的文件名数据表
cookie 网页要求的cookie
ua 浏览器识别
ref 来源页网址
header http请求头

require "import"
import "http"

--get函数以get请求获取网页,参数为请求的网址与cookie
body,cookie,code,headers=http.get("http://www.AndLua+.com")

--post函数以post请求获取网页,通常用于提交表单,参数为请求的网址,要发送的内容与cookie
body,cookie,code,headers=http.post("http://AndLua+.com/Login.Asp?Login=Login&Url=http://AndLua+.com/bbs/index.asp","name=用户名&pass=密码&ki=1")

--download函数和get函数类似,用于下载文件,参数为请求的网址,保存文件的路径与cookie
http.download("http://AndLua+.com","/sdcard/a.txt")

--upload用于上传文件,参数是请求的网址,请求内容字符串部分,格式为以key=value形式的表,请求文件部分,格式为key=文件路径的表,最后一个参数为cookie
http.upload("http://AndLua+.com",{title="标题",msg="内容"},{file1="/sdcard/1.txt",file2="/sdcard/2.txt"})
发布于2020-1-9

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
37人签到
已签0天
  • 46061帖子
  • 1929672热点量
  • 182246火热值