import React, { useRef } from 'react'; import { View, PanResponder, Image } from 'react-native'; const ColorView: React.FC<{}> = () => { const viewRef = useRef(null); const renderColorView = () => ( true, onStartShouldSetPanResponderCapture: (e, gestureState) => true, onMoveShouldSetPanResponder: (e, gestureState) => true, onMoveShouldSetPanResponderCapture: (e, gestureState) => true, onPanResponderGrant: (evt, gestureState) => { // 开始手势操作。给用户一些视觉反馈,让他们知道发生了什么事情! // gestureState.{x,y} 现在会被设置为0 }, onPanResponderMove: (evt, gestureState) => { // 最近一次的移动距离为gestureState.move{X,Y} // 从成为响应者开始时的累计手势移动距离为gestureState.d{x,y} }, onPanResponderTerminationRequest: (evt, gestureState) => true, onPanResponderRelease: (evt, gestureState) => { // 用户放开了所有的触摸点,且此时视图已经成为了响应者。 // 一般来说这意味着一个手势操作已经成功完成。 }, onPanResponderTerminate: (evt, gestureState) => { // 另一个组件已经成为了新的响应者,所以当前手势将被取消。 }, onShouldBlockNativeResponder: (evt, gestureState) => { // 返回一个布尔值,决定当前组件是否应该阻止原生组件成为JS响应者 // 默认返回true。目前暂时只支持android。 return true; }, }).panHandlers} style={{ position: 'absolute', backgroundColor: '#fff', }}> ); const onLayout = (nativeEvent: any) => {}; return ( onLayout(nativeEvent)}> {renderColorView()} ); }; export default ColorView;