Shield 中文文档 下载 App

新工程默认代码每一行在干什么

拿到手的骨架

新建工程后编辑器里已经有一段能直接跑的代码,来自真实界面(项目名做了替换处理):

require "import"
import "android.app.*"
import "android.os.*"
import "android.widget.*"
import "android.view.*"
import "layout"
--activity.setTitle("AndroLua+")
--activity.setTheme(android.R.style...)
activity.setContentView(loadlayout(layout))

逐行拆:

行在干什么
require "import"载入 import 模块——没有这行,后面所有 import 都是废的
import "android.app.*" 等按包导入安卓类,星号表示整包导入
import "layout"载入布局模块(工程里的布局表)
两行注释关闭的备选项:改窗口标题、改主题,需要时去掉行首注释
setContentView(loadlayout(...))把布局表翻译成真实界面并设为当前显示

两个关键概念

import 是桥

Lua 本身不认识安卓的类,import 就是把安卓世界搬进脚本的桥:导入后 Button、TextView 这些名字才能直接用。包名和类名都必须用引号包围,内部类用下划线或美元符号连接(细节见 Java 桥)。

loadlayout 是翻译官

最后一行是「把表变成界面」:layout 是一张描述界面的 Lua 表,loadlayout 读它、生成真实的视图对象,setContentView 把视图挂到窗口上。布局表怎么写,布局表入门整页都在讲。

第一遍读不懂很正常

这五行里有三行是「仪式」——每个工程开头都这么写,先照抄、后理解。真正需要动手改的从下一页开始:第一次运行,点下那个三角按钮看看会发生什么。