Wear OS 通过跟踪内存用量来延长电池续航时间。根据 Wear OS 应用质量指南,使用表盘格式的表盘会受到内存限制:
- 氛围模式:内存用量上限为 10 MB。
- 互动模式:最大内存用量为 100 MB。
内存用量计算
如需使用表盘格式计算表盘中图片或位图字体的内存用量,系统会执行以下操作:
- 解压缩图片或字体。
- 检查是否适用以下优化:
- 调整大小以更好地适应屏幕
- 剪裁透明像素
- 向 RGB565 进行下采样,且不会降低保真度
大小的计算方式如下:
- 对于使用 RGBA8888 的图片和字体:4 x 宽 x 高
- 对于使用 RGB565 的图片和字体:2 x 宽度 x 高度
- 对于使用 ALPHA_8 位图配置的图片和字体:宽 x 高
互动模式
为了计算互动模式的内存用量,系统会对以下值进行求和:
- 任何矢量字体的未处理大小
- 系统默认字体的估算用量
- 应用剪裁、调整大小和重新格式化操作后的图片和位图字体的总大小
配置
对于具有配置的表盘,系统会尝试计算不同配置下表盘资源的总大小。如果组合数量非常大,系统可能会高估同时使用的资源数量。
氛围模式和图层
系统假定氛围模式最多使用三个全屏层,其中两个是静态层。这些层包括:
- 表盘背景。无论背景包含多少张图片,系统都会将其视为一张图片。
- 手指、数字显示屏或动态元素等移动部件。
- 源 XML 文件中的其余元素。
在氛围模式下,大号位图字体通常会占用最多的内存。
减少内存用量的方法
请使用以下优化来减少内存用量。
剪裁位图字体以及调整其大小
剪裁图片和 BitmapFont
对象,使其与显示大小相匹配。
Wear OS 会在解压缩所有图片后绘制表盘。一幅大部分是空白的全屏图片在磁盘上可能会占用 3 KB 的内存,但如果它显示在 450 x 450 像素的屏幕上,则会占用 750 KB 或更多内存。
使用一致的位图字体高度
使用 BitmapFont
时,请确保同一个字符的所有图片都具有相同的高度。同理,请确保包含字词的所有图片具有相同的高度。
在动画中使用一致的帧大小
请更新图片中的元素,并使边界框位置保持固定,而不是在表盘上移动图片。例如,如需为表盘上的圆圈添加动画效果,请更改其颜色,而不是滚动它。
此方法可缩小动画的计算边界框的大小。
删除重复的图片
如需多次显示图片,请仅添加一个图片资源,并多次引用该资源。
使用弧形显示进度
如需模拟在 1 分钟后或 1 小时后完成的进度条,请勿使用 60 张图片,使用 Arc
对象和用于控制其长度的表达式,如下所示:
<PartDraw angle="0" width="400" height="400" name="ProgressBar" pivotX="0.5" pivotY="0.5 x="40" y="40"> <Arc centerX="200" centerY="200" width="400" height="400" startAngle="0" endAngle="360"> <!-- Completes a "progress loop" every minute. --> <Transform target="endAngle" value="0 + (clamp([SECOND], 0, 60) - 0) * 6" /> <Stroke cap="ROUND" color="#123456" thickness="10" /> </Arc> </PartDraw>
如需显示不连续的线条(例如为了实现复古的数字手表样式),请为 Stroke
对象使用短划线属性或半透明蒙版图像叠加层。
将指针和复杂功能放在源文件的末尾
XML 节点会按照源 XML 中列出的顺序绘制。通过将指针和复杂功能放在最后,您可以让系统从氛围模式内存计算中消除整个图层。
评估表盘的内存用量
如需衡量表盘的内存用量,请使用内存占用评估器工具(可在 GitHub 上的 watchface
仓库中获取)。
No recommendations at this time.
Try signing in to your Google account.