屏幕控制使用指导
屏幕控制管的是屏幕上”App 自己画不到”的部分:屏幕会不会自动熄灭、最上面的状态栏(时间、电量) 和最下面的导航栏(返回、主页键)长什么样,以及把当前屏幕截成图片。不需要任何权限。
能做什么
| 想要的效果 | 用哪个属性或方法 |
|---|---|
| 看视频、读文章、做计时时屏幕不熄灭 | 保持常亮(KeepScreenOn) |
| 状态栏和 App 标题栏同一个颜色 | 状态栏颜色(StatusBarColor) |
| 浅色状态栏上的时间、电量看得清 | 状态栏深色图标(DarkStatusBarIcons) |
| 底部导航栏配色 | 导航栏颜色(NavigationBarColor)、导航栏深色图标(DarkNavigationBarIcons) |
| 顶部大图延伸到状态栏下面 | 沉浸式状态栏(ImmersiveStatusBar) |
| 游戏、视频页铺满整个屏幕 | 沉浸式全屏(ImmersiveFullScreen) |
| 把当前界面存成图片 | 截图(TakeScreenshot) |
默认不改变任何东西:属性保持默认时,状态栏、导航栏还是屏幕原来的样子。只想隐藏状态栏,用屏幕的「显示状态栏」属性即可。
快速上手
拖一个屏幕控制到屏幕,在设计器属性里勾选保持常亮。运行后只要 App 在前台,屏幕就不会自动熄灭。
案例一:只在需要时常亮
常亮很耗电,最好只在真正需要的时候打开。比如计时页:开始计时时常亮,暂停或结束时恢复:
when 按钮_开始.Click() {
屏幕控制1.KeepScreenOn = true
计时器1.TimerEnabled = true
}
when 按钮_暂停.Click() {
屏幕控制1.KeepScreenOn = false
计时器1.TimerEnabled = false
}
要点:
- 常亮只在 App 位于前台时有效,切到后台或关闭屏幕后自动失效,不影响其它 App;
- 小米 MIUI/HyperOS 会悄悄清掉常亮设置,本组件会在回到前台和开启期间定时重新设置; 仍然息屏时,在手机「设置 → 应用 → 本应用 → 省电策略」里选「无限制」。
案例二:状态栏、导航栏与 App 配色一致
深色标题栏的 App,让状态栏跟标题栏同色(白色图标);浅色页面的导航栏用白底深色图标:
when Screen1.Initialize() {
屏幕控制1.StatusBarColor = &HFF1565C0
屏幕控制1.DarkStatusBarIcons = false
屏幕控制1.NavigationBarColor = &HFFFFFFFF
屏幕控制1.DarkNavigationBarIcons = true
}
选图标深浅的规律:背景浅就用深色图标,背景深就用白色图标。 深色图标要求安卓 6.0(状态栏)、8.0(导航栏)及以上,更低版本保持白色。
案例三:沉浸式状态栏的图片首页
首页顶部是一张大图时,让图片延伸到状态栏下面,看起来更开阔。设计器里:
- 屏幕最上面放一个高约 24 像素的水平布局当空白(背景透明),再放顶部大图;
- 其余内容照常。
when Screen1.Initialize() {
屏幕控制1.ImmersiveStatusBar = true
屏幕控制1.StatusBarColor = &H33000000
}
状态栏颜色 &H33000000 是 20% 透明度的黑色,图片偏亮时也能看清白色的时间和电量;图片偏暗时可以不设。
案例四:沉浸式全屏的游戏页
游戏、看视频时隐藏状态栏和导航栏,画面铺满整个屏幕;用户从屏幕边缘滑动可以临时呼出系统栏, 过一会儿自动收起。退出游戏时恢复:
when 按钮_开始游戏.Click() {
屏幕控制1.ImmersiveFullScreen = true
屏幕控制1.KeepScreenOn = true
画布1.Visible = true
}
when 按钮_退出游戏.Click() {
屏幕控制1.ImmersiveFullScreen = false
屏幕控制1.KeepScreenOn = false
画布1.Visible = false
}
切到其它 App 再回来时会自动重新隐藏系统栏。
案例五:截图并分享
点按钮截下当前界面,文件名带上时间(不会覆盖上一张),截好后显示出来并调起系统分享:
when 按钮_截图.Click() {
屏幕控制1.ScreenshotFileName = join("截图_", 计时器1.SystemTime(), ".png")
屏幕控制1.TakeScreenshot()
}
when 屏幕控制1.AfterScreenshot(图像位址) {
图像1.Picture = 图像位址
信息分享器1.ShareFile(图像位址)
}
要点:
- 截的是本 App 的界面,不包括状态栏,也截不到其它 App;
- 文件名以
.png结尾存为 PNG,否则存为 JPEG; - 图片保存在应用专属目录,不需要存储权限,系统相册里默认看不到;要进相册请分享到相册或其它 App。
常见问题
| 现象 | 原因与处理 |
|---|---|
| 开了常亮还是息屏 | 常亮只在前台有效;小米等机型把本应用省电策略设为「无限制」 |
| 状态栏时间看不清 | 背景浅色时打开状态栏深色图标;沉浸式时给状态栏设一个半透明深色 |
| 沉浸式后标题被状态栏盖住 | 页面顶部加一段约 24 像素高的空白布局 |
| 设置的颜色没变化 | 设计器预览不显示系统栏,请在手机上看 |
| 截图里视频、地图区域是黑的 | 安卓限制:这类自绘画面画不进截图 |
| 屏幕初始化时立刻截图失败 | 界面还没排好版,稍后(如点按钮或计时器延后)再截 |
| 改回默认后颜色没恢复(鸿蒙) | 鸿蒙拿不到主题原来的颜色,改回默认时系统栏变透明、透出页面背景 |
平台说明
- 安卓:全部支持;安卓 15 起系统栏颜色的实现方式不同,组件已自动适配;
- 鸿蒙:全部支持,改回默认颜色时系统栏变为透明。
完整 .aia 源码与操作指导
需要真机验证系统栏、截图及常亮。默认运行时显示系统栏且不常亮;全屏和沉浸各有独立开关,恢复按钮始终在应用内。截图包含当前屏幕;受系统限制可能失败,由错误区说明。
导入 ScreenControlAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。
| API / 功能 | 操作入口 | 预期结果 |
|---|---|---|
| 八个设计器属性、所有属性读取 | 启动/应用设置 | 属性区展示实际值;启动主动取消常亮和全屏 |
| KeepScreenOn / ImmersiveFullScreen / ImmersiveStatusBar 设置 | 勾选后应用 | 比较常亮、全屏与状态栏布局;全屏时颜色不可见,取消后再比较 |
| DarkStatusBarIcons / DarkNavigationBarIcons 设置 | 切换开关后应用 | 比较系统栏图标明暗;手势导航可能不展示三键图标 |
| StatusBarColor / NavigationBarColor 设置 | 非全屏时点配色 | 两条系统栏在浅蓝和浅黄之间切换 |
| ScreenshotFileName / TakeScreenshot / AfterScreenshot | 填文件名点截图 | 完成事件返回真实图片路径,图像区载入实际截图;失败在底部反馈 |
| 恢复与退出 | 点恢复再退出 | 显示系统栏,取消常亮;不使全屏成为无法退出的状态 |
所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。
屏幕控制
导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 需要真机验证系统栏、截图及常亮。默认运行时显示系统栏且不常亮;全屏和沉浸各有独立开关,恢复按钮始终在应用内。截图包含当前屏幕;受系统限制可能失败,由错误区说明。 覆盖检查 26/26。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。
扫码添加客服咨询