Tasker Screen Builder 详解 Scene 可视化编辑器 拖拽构建自定义 UI
Screen Builder 是什么
Screen Builder 是 Tasker 6.4 正式推出的 Scene 可视化编辑器。在这之前,创建 Scene 界面只能靠手写 XML(非常繁琐)。现在你可以:
- 拖拽组件树布局
- 设置样式(颜色、圆角、阴影、透明度)
- 给按钮绑定 Task(点击执行什么)
- 预览效果后一键生成 Scene
一句话:Screen Builder 让 Tasker 从"只能做自动化逻辑"进化到了"能自己写 App UI"。
核心概念
Screen Builder 的布局采用组件树结构——类似 Android 的 View 树:
Scene Root
├── Box(容器:背景 + 填充)
│ ├── Column(竖向排列子组件)
│ │ ├── Text(标题:"控制面板")
│ │ ├── Row(横向排列)
│ │ │ ├── Button(按钮 A)
│ │ │ └── Button(按钮 B)
│ │ └── TextField(输入框)
│ └── Box
│ └── Slider(音量滑块)
容器组件(Layout)
容器用来排列子组件:
| 容器 | 效果 |
|---|---|
| Box | 简单盒子,可以有背景色和内边距 |
| Column | 竖向排列子组件 |
| Row | 横向排列子组件 |
| Stack | 子组件叠放(后创建的在上层) |
叶子组件(Widget)
组件树的叶子节点,是用户可见可交互的元素:
| 组件 | 功能 | 可交互 |
|---|---|---|
| Text | 文本标签 | 否 |
| Button | 可点击按钮 | 是(绑定 Task) |
| TextField | 文本输入框 | 是(赋值给变量) |
| Slider | 滑块(数值范围) | 是(实时改变值) |
| Switch | 开关(On/Off) | 是 |
| Image | 显示图片 | 可选(点了能触发 Task) |
| ProgressBar | 进度条 | 否 |
| Checkbox | 多选框 | 是 |
| RadioGroup | 单选按钮组 | 是 |
| WebView | 嵌入网页 | 是 |
修饰符(Modifier)
每个组件都可以设置修饰符来控制外观:
- fillMaxSize / fillMaxWidth:充满父容器
- padding(10):内边距 10px
- margin(5):外边距 5px
- backgroundColor(#FF333):背景色
- borderRadius(8):圆角
- borderWidth(2):边框宽度
- opacity(0.8):透明度
- textColor / textSize:文字颜色和大小
- elevation / shadow:阴影(Android 原生 Material 效果)
点击事件绑定
Scene 中每个可交互组件都可以绑定一个 Task:
- Button onClick → 执行指定 Task
- TextField onSubmit → 用户按确定后执行 Task
- Slider onValueChange → 拖动时实时触发 Task(或只在松手后触发)
- Switch onToggle → 状态改变时执行 Task
绑定的 Task 可以通过局部变量接收当前值:
- 比如 Slider 的值自动存入
%sliderValue - Switch 的状态存入
%switchState
实战示例:自动化控制面板
需求
创建一个 Scene,在桌面上常驻,有几个开关可以快速切换:
- 省电模式开关
- 深色模式开关
- 媒体音量滑块
- 一个"清空临时文件"按钮
Screen Builder 构建步骤
Step 1:Scene 基本布局
Scene Root → Box(全屏幕覆盖,半透明背景)
├── Column(所有子组件竖向排列)
│ ├── Text(标题:"自动化控制面板",居中大字)
│ ├── Box(卡片容器:白色圆角 + 阴影)
│ │ ├── Row
│ │ │ ├── Text:省电模式
│ │ │ └── Switch(绑定 Task:TogglePowerSave)
│ │ └── Row
│ │ ├── Text:深色模式
│ │ └── Switch(绑定 Task:ToggleDarkMode)
│ ├── Box(卡片容器)
│ │ ├── Text:媒体音量
│ │ └── Slider(范围 0-100,实时改变 %MediaVol)
│ └── Button("清空临时文件",绑定 Task:CleanupTemp)
Step 2:Task 实现
# Task: TogglePowerSave
If → %switchState = true(Switch 打开)
Perform Task → PowerSave → Action = On
Else
Perform Task → PowerSave → Action = Off
Endif
# Task: CleanupTemp
Write File → ""(清空临时文件)
Notify → "临时文件已清理"
Step 3:显示 Scene
# 用 Action → Scene → Show Scene
Show Scene → ControlPanel
Display As → OverBlocking(阻挡式覆盖层,需要用户交互)
Overlay Display Position → 底部 200px
Scene 显示模式选择
| 模式 | 效果 | 适用场景 |
|---|---|---|
| Overlay | 非阻挡,可同时操作底层 App | 悬浮按钮、常显面板 |
| OverBlocking | 阻挡触摸,用户必须关闭 Scene 才能操作其他 | 设置面板、确认框 |
| Dialog | 小尺寸对话框(默认 320×500) | 简短表单、确认 |
| DialogDim/Blur | Dialog + 半透明/模糊背景 | 美观的确认框 |
| OverBlockFullDisplay | 全屏阻挡 | 临时全屏覆盖 |
Widget v2(Tasker 6.4+)
除了 Scene,Tasker 6.4 还同步推出了 Widget v2——一个独立的、用于在手机桌面上创建自定义小组件的功能。
Widget v2 和 Scene 的关系:
- Scene:覆盖在当前 App 之上的临时/常驻 UI
- Widget v2:手机桌面(Launcher)上的固定 UI 组件
Widget v2 同样使用 Screen Builder 编辑器,组件和修饰符完全复用 Scene 的语法。区别只在于展示位置和生命周期。
Widget v2 能做什么
- 替代 Tasker 传统的"文本 Widget"——现在可以有按钮、开关、图片、进度条
- 创建仪表盘风格的桌面信息展示(电池、天气、快捷开关)
- 美化原本只能是一行文字的 Tasker Widget
Widget v2 的限制
- 桌面 Widget 由 Android Launcher 渲染,刷新频率受限(通常几分钟一次)
- Widget 内容如果变化太频繁,系统可能会限流
- 交互能力有限(不如 Scene 在 App 内部灵活)
总结:Scene / Widget / JavaScriptlet 三种进阶能力的配合
| 需求 | 用什么 |
|---|---|
| 自定义 UI 界面 | Screen Builder(Scene 或 Widget v2) |
| 界面上的按钮/滑块逻辑 | 绑定 Task(普通 Action 或 Perform Task) |
| 复杂逻辑(数据处理、API 调用) | JavaScriptlet / Java Code |
| UI 自动化(点其他 App 的按钮) | Java Code + Accessibility Service |
| Android 系统 API 调用 | Java Code |
这三者配合起来,Tasker 的能力边界非常接近"写一个小型自动化 App"——只是不需要安装、不需要上架、全在 Tasker 内部运行。