说到用Tasker做交互界面,很多人的第一反应是:UI逻辑不就是那一堆动作吗?行,但不够。真正要做出像样的控制面板或悬浮仪表盘——那些带按钮、滑块、文字输入框的东西——得用到Scene。Scene是Tasker专门用来画界面的容器,它独立于普通任务存在,支持各种控件,还能动态绑定变量、用Ja vaScript刷新、根据条件显示不同的图标。简单来说,普通任务跑完就没了,Scene能一直待在那儿,等着你点。

比如想做那种一键切换Wi-Fi和蓝牙、顺便调亮度的控制面板,或者悬浮在桌面上实时显示电量、温度和通知数的仪表盘——这些活儿普通任务干不了,必须由Scene上阵。
理解Scene和普通任务的根本区别
关键区别在于:Scene不是一组后台动作,而是一个独立渲染的UI容器。它有自己的布局、控件和事件响应逻辑。普通任务执行完就消失,Scene却能常驻、刷新、接收点击。【一旦Scene被激活,它会接管当前屏幕区域,其他应用界面会被遮挡或压入后台】。另外,Scene没法在锁屏上直接显示,也不能靠“时间触发”随便跳出来——必须通过Tasker任务显式调用才行。
Scene文件默认存在/sdcard/Tasker/Scenes/目录下,后缀是.xml,但基本不用手动编辑——全靠Tasker内置的可视化编辑器,拖拖拽拽就能搞定。
从零创建一个可点击的开关面板
来,走一遍流程。先打开Tasker,点底部标签的“Scenes”,右下角“+”号,输入名字“HomeCtrl”,确认。
然后点刚建好的HomeCtrl,点右上角“编辑”图标(铅笔那个),进入布局编辑模式。点左下角“+”,选“Button”,拖到画布中央。双击按钮,在弹出的框里填Label为“开灯”,再点“Action” → “Task” → “New Task”,命名为“LightOn”。添加动作:Net → Wi-Fi → Set → On,再加一行:Bluetooth → Set → On。
这一步做完,按钮一按,Wi-Fi和蓝牙就同时开了。需要注意:按钮绑的是任务名,不是动作本身——【务必确保“LightOn”任务已经保存且没有语法错误,不然按下按钮后Scene会静默失败,既不报错也不执行】。
同理,再拖一个Button进来,Label写“关灯”,Action绑到新任务“LightOff”,里面把Wi-Fi和蓝牙都设为Off。
最后点右上角“√”保存Scene,返回列表页,长按HomeCtrl,选“Run Scene”,界面就会弹出两个按钮。点一下试试,功能就生效了。
让Scene动态显示实时数据
静态按钮当然好,但很多场景下需要看到实时数据。最常见的是用Text控件绑定变量。在Scene编辑里,点“+” → “Text” → 拖入 → 双击,Label留空,点“Text”字段右边的“%”图标,输入%BATT,确认。这个Text就会实时显示当前电量百分比。
更灵活的作法是用Ja vaScript做动态刷新。添加一个Text控件,Label设为“温度:”,Text字段填%TEMP。然后点Scene右上角的“JS”按钮(闪电图标),粘贴下面这段代码:
setvar("%TEMP", "加载中...");nsetTimeout(() => {n const temp = Math.floor(Math.random() * 5) + 22;n setvar("%TEMP", temp + "℃");n}, 1000);
这段脚本会在Scene加载1秒后,把%TEMP变量设为22到26℃之间的随机值。实际项目中,这里可以换成调用系统传感器或者网络API的代码。
状态图标也可以用Image控件来做。点“+” → “Image” → 拖入,点“Image”字段右侧的文件夹图标,选一张“wifi_on.png”;再添加一个“If”条件:如果%WIFI等于“on”,就显示这张图,否则显示“wifi_off.png”。需要注意,这个切换逻辑要写在Scene的JS区,而不是控件的属性里。
高级交互:滑块控制屏幕亮度
除了按钮和文字,Scene里还能放滑块。用来调屏幕亮度特别方便。在Scene编辑中点“+” → “Slider” → 拖入画布 → 双击,Min设为1,Max设为255,Default设为128。
然后点Slider → “On Change” → “Task” → 新建任务“SetBright” → 动作选:Display → Display Brightness → Set → %slider1(注意,Slider默认变量名就是%slider1,别写错)。
为防止拖动太快导致亮度突变,可以加个限频保护。在“SetBright”任务开头加动作“Variable → Variable Set → %lasttime → %TIMES”;再加“If”条件:“%TIMES - %lasttime > 100”,只允许每100毫秒执行一次亮度设置。
保存后点“Run Scene”测试,拖动滑块,屏幕亮度会实时响应。如果发现拖动卡顿或无反应,检查一下是否开启了“开发者选项”里的“窗口动画缩放”和“过渡动画缩放”,建议直接设为“关闭”——【Android系统动画会严重干扰Slider的On Change事件触发频率】。
发布Scene:让它能被其他任务调用
Scene默认只能手动运行来测试。要想让它成为自动化流程的一环,得配置“Scene Launch”动作。
打开一个任务,比如“早晨启动任务”,添加动作 → UI → Scene → Scene Launch → 选中“HomeCtrl” → Mode设为“Overlay”(悬浮)或“Fullscreen”(全屏)→ 点击“Display” → 勾选“Show When Locked”(如果需要锁屏显示)→ 保存。
之后只要触发该任务,Scene就会自动弹出来。注意:Overlay模式下,Scene浮在当前应用上方,但没法响应触摸——【只有Fullscreen模式才支持完整的交互,包括按钮点击、滑块拖动】。
最后一步:在Scene编辑页,点右上角“⋯” → “Export”,可以直接生成XML文件,发给朋友导入就能复用,不需要重新配置Tasker环境。