componentWillMount() {
   this.gestureResponder = createResponder({
     onStartShouldSetResponder: (evt, gestureState) => true,
     onMoveShouldSetResponderCapture: (evt, gestureState) => true,
     //onMoveShouldSetResponder: this.handleMove,
     onResponderMove: this.onResponderMove.bind(this),
     onResponderGrant: this.onResponderGrant.bind(this),
     onResponderRelease: this.onResponderRelease.bind(this),
     onResponderTerminate: this.onResponderRelease.bind(this),
     onResponderTerminationRequest: (evt, gestureState) => false //Do not allow parent view to intercept gesture
   });
 }
 componentWillMount () {
     this.gestureResponder = createResponder({
         onStartShouldSetResponder: (evt, gestureState) => true,
         onMoveShouldSetResponderCapture: (evt, gestureState) => true,
         // onMoveShouldSetResponder: this.handleMove,
         onResponderMove: this.onResponderMove,
         onResponderGrant: this.onResponderGrant,
         onResponderRelease: this.onResponderRelease,
         onResponderTerminate: this.onResponderRelease,
         onResponderTerminationRequest: (evt, gestureState) => false, // Do not allow parent view to intercept gesture
         onResponderSingleTapConfirmed: (evt, gestureState) => {
             this.props.onSingleTapConfirmed && this.props.onSingleTapConfirmed();
         }
     });
 }
  componentWillMount() {
    console.log('componentWillMount...');
    this.gestureResponder = createResponder({
      onStartShouldSetResponder: (evt, gestureState) => true,
      onStartShouldSetResponderCapture: (evt, gestureState) => true,
      onMoveShouldSetResponder: (evt, gestureState) => true,
      onMoveShouldSetResponderCapture: (evt, gestureState) => true,

      onResponderGrant: (evt, gestureState) => {
      },
      onResponderMove: (evt, gestureState) => {
        let thumbSize = this.state.thumbSize;
        if (gestureState.pinch && gestureState.previousPinch) {
          thumbSize *= (gestureState.pinch / gestureState.previousPinch)
        }
        let {left, top} = this.state;
        left += (gestureState.moveX - gestureState.previousMoveX);
        top += (gestureState.moveY - gestureState.previousMoveY);

        this.setState({
          gestureState: {
            ...gestureState
          },
          left, top, thumbSize
        })
      },
      onResponderTerminationRequest: (evt, gestureState) => true,
      onResponderRelease: (evt, gestureState) => {
        this.setState({
          gestureState: {
            ...gestureState
          }
        })
      },
      onResponderTerminate: (evt, gestureState) => {
      },
      onResponderSingleTapConfirmed: (evt, gestureState) => {
        console.log('onResponderSingleTapConfirmed...' + JSON.stringify(gestureState));
      },
      debug: true
    });
  }
  componentWillMount() {
    function onResponderReleaseOrTerminate(evt, gestureState) {
      if(this.activeResponder) {
        if(this.activeResponder === this.viewPagerResponder
          && !this.shouldScrollViewPager(evt, gestureState)
          && Math.abs(gestureState.vx) > 0.5) {
          this.activeResponder.onEnd(evt, gestureState, true);
          this.getViewPagerInstance().flingToPage(this.currentPage, gestureState.vx);
        } else {
          this.activeResponder.onEnd(evt, gestureState);
        }
        this.activeResponder = null;
      }
      this.firstMove = true;
      this.firstDx = 0;
      this.props.onGalleryStateChanged && this.props.onGalleryStateChanged(true);
    }

    this.gestureResponder = createResponder({
      onStartShouldSetResponderCapture: (evt, gestureState) => true,
      onStartShouldSetResponder: (evt, gestureState) => {
        return true;
      },
      onResponderGrant: (evt, gestureState) => {
        this.activeImageResponder(evt, gestureState);
      },
      onResponderMove: (evt, gestureState) => {
        if (this.firstMove) {
          this.firstMove = false;
          if (this.shouldScrollViewPager(evt, gestureState)) {
            this.activeViewPagerResponder(evt, gestureState);
          }
          this.props.onGalleryStateChanged && this.props.onGalleryStateChanged(false);
        }
        if(this.activeResponder === this.viewPagerResponder) {
          const dx = gestureState.moveX - gestureState.previousMoveX;
          if(dx > 0 && this.firstDx < 0 && !this.shouldScrollViewPager(evt, gestureState)) {
            const offset = this.getViewPagerInstance().getScrollOffsetFromCurrentPage();
            if(dx > offset) {
              this.getViewPagerInstance().scrollByOffset(offset);
              gestureState.moveX -= offset;
              this.activeImageResponder(evt, gestureState);
            }
          } else if(dx < 0 && this.firstDx > 0 && !this.shouldScrollViewPager(evt, gestureState)) {
            const offset = this.getViewPagerInstance().getScrollOffsetFromCurrentPage();
            if(dx < offset) {
              this.getViewPagerInstance().scrollByOffset(offset);
              gestureState.moveX += offset;
              this.activeImageResponder(evt, gestureState);
            }
          }
        }
        this.activeResponder.onMove(evt, gestureState);
      },
      onResponderRelease: onResponderReleaseOrTerminate.bind(this),
      onResponderTerminate: onResponderReleaseOrTerminate.bind(this),
      onResponderSingleTapConfirmed: (evt, gestureState) => {
        this.props.onSingleTapConfirmed && this.props.onSingleTapConfirmed(this.currentPage);
      }
    });

    this.viewPagerResponder = {
      onStart: (evt, gestureState) => {
        this.getViewPagerInstance().onResponderGrant(evt, gestureState);
      },
      onMove: (evt, gestureState) => {
        this.getViewPagerInstance().onResponderMove(evt, gestureState);
      },
      onEnd: (evt, gestureState, disableSettle) => {
        this.getViewPagerInstance().onResponderRelease(evt, gestureState, disableSettle);
      }
    }

    this.imageResponder = {
      onStart: ((evt, gestureState) => {
        this.getCurrentImageTransformer().onResponderGrant(evt, gestureState);
      }),
      onMove: (evt, gestureState) => {
        this.getCurrentImageTransformer().onResponderMove(evt, gestureState);
      },
      onEnd: (evt, gestureState) => {
        this.getCurrentImageTransformer().onResponderRelease(evt, gestureState);
      }
    }
  }