外观
system.folme
约 858 字大约 3 分钟
2026-07-15
小米 UI Folme 动画桥,提供以下成员:
| 成员 | 说明 |
|---|---|
setTo | 立即把目标设置到属性状态 |
fromTo | 从一组属性动画到另一组属性 |
startGroup | 启动一组对象/属性动画 |
isFinished | 查询动画是否结束 |
cancel | 取消动画 |
getState | 获取动画状态 |
attr | 单属性描述字段 |
attrs | 多属性描述字段 |
onUpdate | 更新回调 |
onComplete | 完成回调 |
这是面向旧 UI 引擎对象的原生动画桥,不是普通 DOM/CSS API。状态对象以 attr、fromState、toState 和配置项组合表达。
固件实现还确认:
fromTo最终进入内部fromToInner;- 配置支持
ease和delay,默认缓动痕迹为{ "ease": ["immediate", 0] }; - 目标元素被删除时会报
Folme element is removed or deleting.; - 可动画属性至少包括
scale-x/y、translate-x/y、边框宽度/圆角、padding 和 margin 各方向属性。
已确认的属性名
scale-x scale-y
translate-x translate-y
border-width border-top-width
border-right-width border-bottom-width
border-left-width border-radius
padding-top padding-right
padding-bottom padding-left
margin-top margin-right
margin-bottom margin-left属性名必须使用连字符形式,不能根据 CSS 习惯擅自改成 camelCase。
参数对象
interface FolmeState {
attr: string
value?: number | string
[property: string]: unknown
}
interface FolmeConfig {
delay?: number
ease?: string | unknown[]
onUpdate?: (value: unknown) => void
onComplete?: () => void
}
interface FromToOptions extends FolmeConfig {
attr: string
fromState: FolmeState | object
toState: FolmeState | object
}fromState、toState 是原生实现强制读取的字段,动画对象还必须带框架分配的 unique identifier;普通 JS 对象无法伪造有效 DOM 元素句柄。预装汽车应用确认使用 attr: 'scale'、fromState、toState、ease: 'cubic-bezier'、delay、onUpdate 和 onComplete。
方法职责与入参
| 方法 | 可确认的职责 | 未确认项 |
|---|---|---|
setTo(target, toState) | 立即把目标设置到 toState | 状态字段随属性类型变化 |
fromTo(target, options) | 按 fromState 到 toState 启动动画 | 返回值不应作为完成依据 |
startGroup(group) | 批量启动一组对象/属性动画 | 每项仍需有效元素 identifier |
isFinished(target) | 查询目标动画是否结束 | 返回布尔值 |
cancel(target, attrs?) | 取消目标全部或指定属性动画 | attrs 是属性名数组 |
getState(target, attrs) | 读取指定属性当前状态 | attrs 必须是字符串属性名 |
fromTo 示例
固件明确解析 ease 与 delay,并包含默认片段:
import folme from '@system.folme'
// target 必须来自当前页面旧 UI 引擎,不能传 CSS selector。
folme.fromTo(target, {
attr: 'scale',
fromState: { scale: 1 },
toState: { scale: 0.92 },
ease: 'cubic-bezier',
delay: 0,
onUpdate(value) {},
onComplete() {}
})旧版本也保留 { ease: ['immediate', 0] } 形式的内部默认配置;因此 ease 既可能是预设名,也可能是引擎参数数组。不同 UI 运行时不应混用。
推荐替代方案
普通应用优先使用框架公开的 CSS transition、animation 或组件动画。只有在你能从同版本预装快应用恢复真实调用点时,才应尝试 Folme,并同时记录目标对象来源、位置参数顺序、attr/attrs 形态、回调入参以及页面销毁行为。
由于私有旧 Feature 没有可获取的 JIDL,不同属性的状态字段和值域仍需从同版本预装应用确认。调用前使用 canIUse(),并优先采用框架公开的 CSS/动画能力。
机型可用性
| Xiaomi Smart Band 10 Pro | Xiaomi Watch S4 41mm |
|---|---|
| △ | △ |
获取源代码
- 当前公开仓库没有
system.folme的 JIDL或 C++ 实现。 - Feature Framework 构建文件中的 Folme 条目