新工程默认代码每一行在干什么
拿到手的骨架
新建工程后编辑器里已经有一段能直接跑的代码,来自真实界面(项目名做了替换处理):
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 把视图挂到窗口上。布局表怎么写,布局表入门整页都在讲。
第一遍读不懂很正常
这五行里有三行是「仪式」——每个工程开头都这么写,先照抄、后理解。真正需要动手改的从下一页开始:第一次运行,点下那个三角按钮看看会发生什么。