反应导航自定义比例过渡动画,如应用程序打开时

时间:2018-06-19 07:36:20

标签: react-native react-navigation react-animated

我希望在我的下一个屏幕按下按钮时创建缩小效果,这是一个自定义转换,例如从主屏幕按下应用程序并从中弹出屏幕时。

我在stackNavigator中尝试过transitionConfig并使用了以下代码的自定义转换

let sharedElementTransition = (index, position,touchPosition, height) => {
const inputRange = [index - 1, index, index + 1];
const outputRange = [0.1, 1, 1];

const opacity = position.interpolate({
  inputRange,
  outputRange: [0, 1, 1],
});

const scale = position.interpolate({
  inputRange:[0, 0.01, 0.99, 1],
  outputRange:[0.3, 0.3, 1, 1],
});

const translateX = position.interpolate({
  inputRange,
  outputRange: [touchPosition.x, 0, 0]
})

const translateY = position.interpolate({
  inputRange,
  outputRange: [touchPosition.y, 0, 0]
})

return {
opacity,
  transform: [
      {scale},
      { translateX },
      { translateY },
  ]
 };
};

我面临的问题是从屏幕中间开始缩放,所以如果我将位置作为屏幕右上角的(237,16)传递,我无法将translateX和translateY正确地设置为动画作为比例下一个屏幕的尺寸小于屏幕尺寸(我们通过最后一个屏幕按下的按钮设置下一个屏幕的动画),因此其坐标系统没有一个点(237,16)。

这不是共享元素动画问题,我也尝试在反应导航文档中推荐https://github.com/fram-x/FluidTransitions,但在这个(从它的例子中,没有大量文档)我的屏幕在FluidNavigator下似乎永远不会有一个标题。

0 个答案:

没有答案
相关问题