android - React Native - 动画值的 getTranslateTransform() 在 Android 虚拟设备上出错
问题描述
我正在使用 react-native 实现可拖动组件。这个组件在我的 IOS 设备上运行良好。但是,当我在虚拟 android 设备上测试此组件时,会出现如下错误:
更新由 RCTView 管理的视图的属性“转换”时出错
无效的
translateX 的值不能从 String 转换为 Double
下面是我的代码
export default class DraggableTouchableOpacity extends Component {
constructor (props) {
super(props);
}
componentWillMount() {
this.pan = new Animated.ValueXY();
this.panResponder = PanResponder.create({
onMoveShouldSetPanResponder: () => true,
onPanResponderGrant: (e, gestureState) => {
this.pan.setOffset({x: this.pan.x, y: this.pan.y});
},
onPanResponderMove: (e, gestureState) => {
this.pan.setValue({x: gestureState.dx, y: gestureState.dy});
},
onPanResponderRelease: (e) => {
Animated.spring(this.pan, {
toValue: {x: 0, y: 0},
friction: 5
}).start();
}
});
}
render() {
return (
<Animated.View
style = {{
transform: this.pan.getTranslateTransform()
}}
{...this.panResponder.panHandlers}
>
<TouchableOpacity {...this.props} ref = {view => { this.myComponent = view; }}/>
</Animated.View>
);
}
}
解决方案
onPanResponderGrand 内的 setOffset 导致错误
更改该功能
onPanResponderGrant: (e, gestureState) => {
this.pan.setOffset({x: this.pan.x, y: this.pan.y});
},
至
onPanResponderGrant: (e, gestureState) => {
this.pan.setValue({x: 0, y: 0});
},
推荐阅读
- ruby-on-rails - 如何格式化 HTTParty POST 请求?
- ruby-on-rails-6 - Rails ActionText:禁用直接上传
- ios - 长按后如何禁用 UICollectionViewCell 上的 UILongPressGestureRecognizer?
- python - PyGame 无法更改歌曲
- typescript - 如何限制 AmCharts 4 XYChart 中列的最大宽度/高度
- javascript - 如何在一个 blob 中使用多个 arrayBuffers?
- sql - 在 vb.net 中运行 Powershell 脚本时出现问题
- c# - 如何使用现有元素的 xpath 获取兄弟姐妹?
- r - 改变一列并在R中函数的输入变量之后命名它
- python - 在 draw_networkx 可视化中突出显示节点而不更改节点颜色