基本代码
activity.setTitle('Title')--设置窗口标题
activity.setContentView(loadlayout(layout))--设置窗口视图
activity.setTheme(android.R.style.Theme_DeviceDefault_Light)--设置主题
activity.getWidth()--获取屏幕宽
activity.getHeight()--获取屏幕高
activity.newActivity("main")--跳转页面
activity.finish()--关闭当前页面
activity.recreate()--重构activity
os.exit()--结束程序
tostring()--转换字符串
tonumber()--转换数字
tointeger()--转换整数
--线程
--thread
thread(function()print"线程"end)
--task
task(function()print"线程"end)
获取设备标识码
import "android.provider.Settings$Secure"
android_id = Secure.getString(activity.getContentResolver(), Secure.ANDROID_ID)
获取IMEI
import "android.content.Context"
imei=activity.getSystemService(Context.TELEPHONY_SERVICE).getDeviceId()
控件背景渐变动画
view=控件id
color1 = 0xffFF8080;
color2 = 0xff8080FF;
color3 = 0xff80ffff;
color4 = 0xff80ff80;
import "android.animation.ObjectAnimator"
import "android.animation.ArgbEvaluator"
import "android.animation.ValueAnimator"
import "android.graphics.Color"
colorAnim = ObjectAnimator.ofInt(view,"backgroundColor",{color1, color2, color3,color4})
colorAnim.setDuration(3000)
colorAnim.setEvaluator(ArgbEvaluator())
colorAnim.setRepeatCount(ValueAnimator.INFINITE)
colorAnim.setRepeatMode(ValueAnimator.REVERSE)
colorAnim.start()
获取屏幕精确尺寸
function getScreenPhysicalSize(ctx)
import "android.util.DisplayMetrics"
dm = DisplayMetrics();
ctx.getWindowManager().getDefaultDisplay().getMetrics(dm);
diagonalPixels = Math.sqrt(Math.pow(dm.widthPixels, 2) + Math.pow(dm.heightPixels, 2));
return diagonalPixels / (160 * dm.density);
end
print(getScreenPhysicalSize(activity))
发送邮件
import "android.content.Intent"
i = Intent(Intent.ACTION_SEND)
i.setType("message/rfc822")
i.putExtra(Intent.EXTRA_EMAIL, {"[email protected]"})
i.putExtra(Intent.EXTRA_SUBJECT,"Feedback")
i.putExtra(Intent.EXTRA_TEXT,"Content")
activity.startActivity(Intent.createChooser(i, "Choice"))
自定义默认弹窗标题,消息,按钮的颜色
dialog=AlertDialog.Builder(this)
.setTitle("标题")
.setMessage("消息")
.setPositiveButton("积极",{onClick=function(v) print"点击了积极按钮"end})
.setNeutralButton("中立",nil)
.setNegativeButton("否认",nil)
.show()
dialog.create()
--更改消息颜色
message=dialog.findViewById(android.R.id.message)
message.setTextColor(0xff1DA6DD)
--更改Button颜色
import "android.graphics.Color"
dialog.getButton(dialog.BUTTON_POSITIVE).setTextColor(0xff1DA6DD)
dialog.getButton(dialog.BUTTON_NEGATIVE).setTextColor(0xff1DA6DD)
dialog.getButton(dialog.BUTTON_NEUTRAL).setTextColor(0xff1DA6DD)
--更改Title颜色
import "android.text.SpannableString"
import "android.text.style.ForegroundColorSpan"
import "android.text.Spannable"
sp = SpannableString("标题")
sp.setSpan(ForegroundColorSpan(0xff1DA6DD),0,#sp,Spannable.SPAN_EXCLUSIVE_INCLUSIVE)
dialog.setTitle(sp)
获取手机内置存储空间
--获取手机内置剩余存储空间
function GetSurplusSpace()
fs = StatFs(Environment.getDataDirectory().getPath())
return Formatter.formatFileSize(activity, (fs.getAvailableBytes()))
end
--获取手机内置存储总空间
function GetTotalSpace()
path = Environment.getExternalStorageDirectory()
stat = StatFs(path.getPath())
blockSize = stat.getBlockSize()
totalBlocks = stat.getBlockCount()
return Formatter.formatFileSize(activity, blockSize * totalBlocks)
end
获取视频第一帧
function GetVideoFrame(path)
import "android.media.MediaMetadataRetriever"
media = MediaMetadataRetriever()
media.setDataSource(tostring(path))
return media.getFrameAtTime()
end
选择文件模块
import "android.widget.ArrayAdapter"
import "android.widget.LinearLayout"
import "android.widget.TextView"
import "java.io.File"
import "android.widget.ListView"
import "android.app.AlertDialog"
function ChoiceFile(StartPath,callback)
--创建ListView作为文件列表
lv=ListView(activity).setFastScrollEnabled(true)
--创建路径标签
cp=TextView(activity)
lay=LinearLayout(activity).setOrientation(1).addView(cp).addView(lv)
ChoiceFile_dialog=AlertDialog.Builder(activity)--创建对话框
.setTitle("选择文件")
.setView(lay)
.show()
adp=ArrayAdapter(activity,android.R.layout.simple_list_item_1)
lv.setAdapter(adp)
function SetItem(path)
path=tostring(path)
adp.clear()--清空适配器
cp.Text=tostring(path)--设置当前路径
if path~="/" then--不是根目录则加上../
adp.add("../")
end
ls=File(path).listFiles()
if ls~=nil then
ls=luajava.astable(File(path).listFiles()) --全局文件列表变量
table.sort(ls,function(a,b)
return (a.isDirectory()~=b.isDirectory() and a.isDirectory()) or ((a.isDirectory()==b.isDirectory()) and a.Name<b.Name)
end)
else
ls={}
end
for index,c in ipairs(ls) do
if c.isDirectory() then--如果是文件夹则
adp.add(c.Name.."/")
else--如果是文件则
adp.add(c.Name)
end
end
end
lv.onItemClick=function(l,v,p,s)--列表点击事件
项目=tostring(v.Text)
if tostring(cp.Text)=="/" then
路径=ls[p+1]
else
路径=ls[p]
end
if 项目=="../" then
SetItem(File(cp.Text).getParentFile())
elseif 路径.isDirectory() then
SetItem(路径)
elseif 路径.isFile() then
callback(tostring(路径))
ChoiceFile_dialog.hide()
end
end
SetItem(StartPath)
end
--ChoiceFile(StartPath,callback)
--第一个参数为初始化路径,第二个为回调函数
--原创
选择路径模块
require "import"
import "android.widget.ArrayAdapter"
import "android.widget.LinearLayout"
import "android.widget.TextView"
import "java.io.File"
import "android.widget.ListView"
import "android.app.AlertDialog"
function ChoicePath(StartPath,callback)
--创建ListView作为文件列表
lv=ListView(activity).setFastScrollEnabled(true)
--创建路径标签
cp=TextView(activity)
lay=LinearLayout(activity).setOrientation(1).addView(cp).addView(lv)
ChoiceFile_dialog=AlertDialog.Builder(activity)--创建对话框
.setTitle("选择路径")
.setPositiveButton("OK",{
onClick=function()
callback(tostring(cp.Text))
end})
.setNegativeButton("Canel",nil)
.setView(lay)
.show()
adp=ArrayAdapter(activity,android.R.layout.simple_list_item_1)
lv.setAdapter(adp)
function SetItem(path)
path=tostring(path)
adp.clear()--清空适配器
cp.Text=tostring(path)--设置当前路径
if path~="/" then--不是根目录则加上../
adp.add("../")
end
ls=File(path).listFiles()
if ls~=nil then
ls=luajava.astable(File(path).listFiles()) --全局文件列表变量
table.sort(ls,function(a,b)
return (a.isDirectory()~=b.isDirectory() and a.isDirectory()) or ((a.isDirectory()==b.isDirectory()) and a.Name<b.Name)
end)
else
ls={}
end
for index,c in ipairs(ls) do
if c.isDirectory() then--如果是文件夹则
adp.add(c.Name.."/")
end
end
end
lv.onItemClick=function(l,v,p,s)--列表点击事件
项目=tostring(v.Text)
if tostring(cp.Text)=="/" then
路径=ls[p+1]
else
路径=ls[p]
end
if 项目=="../" then
SetItem(File(cp.Text).getParentFile())
elseif 路径.isDirectory() then
SetItem(路径)
elseif 路径.isFile() then
callback(tostring(路径))
ChoiceFile_dialog.hide()
end
end
SetItem(StartPath)
end
import "android.os.*"
ChoicePath(Environment.getExternalStorageDirectory().toString(),
function(path)
print(path)
end)
--第一个参数为初始化路径,第二个为回调函数
--原创
获取视图中的文本
function GetAllText(view)
textTable={}
function GetText(Parent)
local number=Parent.getChildCount()
for i=0,number do
local view=Parent.getChildAt(i)
if pcall(function()view.addView(TextView(activity))end) then
GetText(view)
elseif pcall(function()view.getText()end) then
table.insert(textTable,tostring(view.Text))
end
end
end
GetText(view)
return textTable
end
print(table.unpack(GetAllText(Parent)))
控件圆角
function CircleButton(view,InsideColor,radiu)
import "android.graphics.drawable.GradientDrawable"
drawable = GradientDrawable()
drawable.setShape(GradientDrawable.RECTANGLE)
drawable.setColor(InsideColor)
drawable.setCornerRadii({radiu,radiu,radiu,radiu,radiu,radiu,radiu,radiu});
view.setBackgroundDrawable(drawable)
end
角度=50
控件id=ed
控件颜色=0xFF09639C
CircleButton(控件id,控件颜色,角度)