是否可以将动画 setValue 与 useNativeDriver 一起使用?
Is it possible to use animated setValue with useNativeDriver?
我正在翻译视图以跟随移动手势,尽可能减少延迟。
我正在研究几个选项,其中之一是 - 如果可能的话 - 将 setValue 操作发送到 UI 线程,而不是 JS 线程。
尽管在文档中指出 Animated.timing、Animated.spring 等类型的函数可以使用 useNativeDriver: true
指令卸载到 UI 线程,没有参考 - 至少我可以找到 - 关于是否可以将直接 setValue 操作发送到 UI 线程。
我的问题是;是否可以将动画 setValue 与 useNativeDriver 一起使用,如果可能的话如何使用。
下面是我使用的代码的粗略示例:
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {};
this.spaceAnimatedTranslations = new Animated.ValueXY();
this._animatedStyle = {
transform: [
{ translateX: this.spaceAnimatedTranslations.x },
{ translateY: this.spaceAnimatedTranslations.y }
]
};
}
onSpaceMove(event) {
this.spaceAnimatedTranslations.setValue({x: event.nativeEvent.translationX, y: event.nativeEvent.translationY});
}
render(){
return <PanGestureHandler
key={`test`}
onGestureEvent={e => this.onSpaceMove(e)}>
<Animated.View
ref={ref => {
this.testAnimatedView = ref;
}}
style={[this._animatedStyle]}>
<View style={styles._box_content}>
{someContent}
</View>
</Animated.View>
</PanGestureHandler>
}
}
您必须使用 Animated.event
直接在本机线程中进行映射。参见 Tracking gestures。其他可能性是将 react-native-reanimated
与 react-native-gesture-handler
.
一起使用
我正在翻译视图以跟随移动手势,尽可能减少延迟。
我正在研究几个选项,其中之一是 - 如果可能的话 - 将 setValue 操作发送到 UI 线程,而不是 JS 线程。
尽管在文档中指出 Animated.timing、Animated.spring 等类型的函数可以使用 useNativeDriver: true
指令卸载到 UI 线程,没有参考 - 至少我可以找到 - 关于是否可以将直接 setValue 操作发送到 UI 线程。
我的问题是;是否可以将动画 setValue 与 useNativeDriver 一起使用,如果可能的话如何使用。
下面是我使用的代码的粗略示例:
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {};
this.spaceAnimatedTranslations = new Animated.ValueXY();
this._animatedStyle = {
transform: [
{ translateX: this.spaceAnimatedTranslations.x },
{ translateY: this.spaceAnimatedTranslations.y }
]
};
}
onSpaceMove(event) {
this.spaceAnimatedTranslations.setValue({x: event.nativeEvent.translationX, y: event.nativeEvent.translationY});
}
render(){
return <PanGestureHandler
key={`test`}
onGestureEvent={e => this.onSpaceMove(e)}>
<Animated.View
ref={ref => {
this.testAnimatedView = ref;
}}
style={[this._animatedStyle]}>
<View style={styles._box_content}>
{someContent}
</View>
</Animated.View>
</PanGestureHandler>
}
}
您必须使用 Animated.event
直接在本机线程中进行映射。参见 Tracking gestures。其他可能性是将 react-native-reanimated
与 react-native-gesture-handler
.