You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Expo Tabs中添加标签页切换的滑动过渡动画?

实现Expo Router标签页切换的滑动动画

要给Expo Router的底部标签页添加切换滑动动画,你可以通过配置<Tabs>组件的screenOptions,启用手势并自定义转场动画效果,具体修改如下:

修改(tabs)/_layout.jsx代码:

const TabLayout = () => {
  return (
    <>
      <Tabs
        screenOptions={{
          // 启用左右滑动切换手势
          gestureEnabled: true,
          // 开启标签页切换动画
          animationEnabled: true,
          // 定义动画时长与类型
          transitionSpec: {
            open: {
              animation: 'timing',
              config: { duration: 300 }
            },
            close: {
              animation: 'timing',
              config: { duration: 300 }
            }
          },
          // 自定义滑动动画的样式插值
          cardStyleInterpolator: ({ current, next, layouts }) => ({
            cardStyle: {
              transform: [
                {
                  translateX: current.progress.interpolate({
                    inputRange: [0, 1],
                    outputRange: [layouts.screen.width, 0]
                  })
                },
                {
                  translateX: next
                    ? next.progress.interpolate({
                        inputRange: [0, 1],
                        outputRange: [0, -layouts.screen.width]
                      })
                    : 0
                }
              ]
            }
          })
        }}
      >
        <Tabs.Screen name="index" />
        <Tabs.Screen name="settings" />
      </Tabs>
    </>
  );
};

export default TabLayout;

关键配置说明:

  • gestureEnabled: true:允许用户通过左右滑动手势切换标签页
  • animationEnabled: true:开启标签页切换时的动画效果
  • transitionSpec:设置动画的时长(这里是300ms)和动画类型(线性计时动画)
  • cardStyleInterpolator:通过插值计算实现页面左右滑动的视觉效果,切换时当前页面从右侧滑出,目标页面从左侧滑入

修改后,点击底部标签或滑动页面都会触发平滑的滑动切换动画。

内容的提问来源于stack exchange,提问作者Samych02

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 04:57:42