版本:0.81
布局动画
当下一次布局发生时,会自动将视图动画过渡到新的位置。
在函数组件中,常见的用法是在更新 state hook 之前调用此 API;在类组件中,则是在调用 setState 之前调用。
请注意,要让它在 Android 上生效,你需要通过 UIManager 设置以下标志:
JavaScript
if (Platform.OS === 'android') {
if (UIManager.setLayoutAnimationEnabledExperimental) {
UIManager.setLayoutAnimationEnabledExperimental(true);
}
}
示例
参考
方法
configureNext()
React TSX
static configureNext(
config: LayoutAnimationConfig,
onAnimationDidEnd?: () => void,
onAnimationDidFail?: () => void,
);
安排在下一次布局时执行动画。
参数:
| 名称 | 类型 | 必需 | 描述 |
|---|---|---|---|
| config | object | 是 | 见下方配置说明。 |
| onAnimationDidEnd | function | 否 | 动画完成时调用。 |
| onAnimationDidFail | function | 否 | 动画失败时调用。 |
config 参数是一个包含以下键的对象。create 会返回一个有效的 config 对象,Presets 中的对象也都可以作为 config 传入。
- 以毫秒为单位的
duration create,用于为新视图添加动画的可选配置update,用于为已更新视图添加动画的可选配置delete,用于为移除的视图添加动画的可选配置
传递给 create、update 或 delete 的配置包含以下键:
type,要使用的动画类型property,要动画过渡的布局属性(可选,但建议在create和delete中使用)springDamping(数字,可选,仅在type: Type.spring时使用)initialVelocity(数字,可选)delay(数字,可选)duration(数字,可选)
create()
React TSX
static create(duration, type, creationProp)
用于创建一个对象(包含 create、update 和 delete 字段),将其传入 configureNext。type 参数是一个动画类型,creationProp 参数是一个布局属性。
示例:
属性
类型
在 create 方法中,或在 configureNext 的 create/update/delete 配置中使用的动画类型枚举。(示例用法:LayoutAnimation.Types.easeIn)
| Types |
|---|
| spring |
| linear |
| easeInEaseOut |
| easeIn |
| easeOut |
| keyboard |
属性
在 create 方法中,或在 configureNext 的 create/update/delete 配置中使用的布局属性枚举。(示例用法:LayoutAnimation.Properties.opacity)
| Properties |
|---|
| opacity |
| scaleX |
| scaleY |
| scaleXY |
预设
一组预定义的动画配置,可传入 configureNext。
| Presets | Value |
|---|---|
| easeInEaseOut | create(300, 'easeInEaseOut', 'opacity') |
| linear | create(500, 'linear', 'opacity') |
| spring | {duration: 700, create: {type: 'linear', property: 'opacity'}, update: {type: 'spring', springDamping: 0.4}, delete: {type: 'linear', property: 'opacity'} } |
easeInEaseOut
使用 Presets.easeInEaseOut 调用 configureNext()。
linear
使用 Presets.linear 调用 configureNext()。
spring
使用 Presets.spring 调用 configureNext()。
示例: