auto.js 中文文档 下载 App

UI 事件绑定与值读写——button.click、checkbox.checked、input.text

访问 UI 组件

"ui";
ui.layout(
  <vertical>
    <button id="btn_ok" text="确定"/>
    <input id="inp_name" hint="请输入"/>
    <checkbox id="chk_agree" text="我已阅读"/>
  </vertical>
);

// 访问方式:ui.组件ID
log(ui.btn_ok.getText());
log(ui.inp_name.getText());
log(ui.chk_agree.isChecked());

常用事件

click — 点击事件

ui.btn_ok.click(function() {
  toast("按钮被点击了");
});

change — 状态变化

ui.chk_agree.change(function(checked) {
  ui.btn_ok.enabled(checked);
});

textChanged — 输入框文字变化

ui.inp_name.on("textChanged", function(text) {
  log("当前输入:" + text);
});

longClick — 长按

ui.btn_ok.longClick(function() {
  toast("长按了");
  return true; // 返回 true 表示已消费事件
});

读取与修改值

// 按钮文字
ui.btn_ok.text("新文字");           // 设置
var t = ui.btn_ok.text();           // 读取

// 输入框
ui.inp_name.text("默认值");
var val = ui.inp_name.text();

// 复选框
ui.chk_agree.checked(true);
var isOn = ui.chk_agree.checked();

// 开关
ui.sw_mode.checked();

// 文本标签
ui.txt_status.setText("运行中...");
ui.txt_status.setTextColor("#ff0000");

子线程更新 UI

UI 只能在主线程更新,脚本逻辑通常在子线程执行。跨线程更新 UI 用 ui.run():

threads.start(function() {
  // 耗时操作
  sleep(2000);
  
  // 更新 UI(必须切回主线程)
  ui.run(function() {
    ui.txt_status.setText("任务完成");
    ui.btn_run.enabled(true);
  });
});

对话框

// 确认对话框
dialogs.confirm("确认执行?", "这将打开淘宝 APP").then(function(ok) {
  if (ok) launchApp("淘宝");
});

// 输入对话框
dialogs.input("请输入 APP 名称").then(function(name) {
  if (name) launchApp(name);
});

// 单选对话框
dialogs.singleChoice("选择模式", ["自动", "手动", "半自动"]).then(function(idx) {
  toast("你选了第 " + idx + " 个");
});