美文网首页
2021-05-20 整个屏幕触发拖动平移位置

2021-05-20 整个屏幕触发拖动平移位置

作者: 无尽甜蜜里悠悠记忆 | 来源:发表于2021-05-20 11:44 被阅读0次

import React, { PureComponent }from 'react';

import PropTypes from 'prop-types';

import {

View,

  StyleSheet,

  PanResponder,

  Animated,

}from 'react-native';

import {ScreenWidth, ScreenHeight }from '../styles/sizes';

class HandTouchMoveextends PureComponent {

constructor(props) {

super(props);

    //初始居中

    const initWidth = (ScreenWidth - props.sliderWidth ) /2;

    this.state = {

frameStart: initWidth,

      frameTop:0.1 *ScreenHeight,

    };

    this.touchStart =8;

    this.touchTop =8;

    this.containerBorderHeight =0;

    this.containerBounds = {

width:0,

      height:ScreenHeight /1.5,

    };

    // eslint-disable-next-line no-underscore-dangle

    this._panResponder =PanResponder.create({

onStartShouldSetPanResponder: () =>true,

      onPanResponderGrant: (e, gestureState) => {

const { frameStart, frameTop } =this.state;

        this.touchStart = frameStart;

        this.touchTop = frameTop;

        // eslint-disable-next-line react/no-unused-state

        this.setState({isAddNewSession:true });

      },

      onPanResponderMove: (evt, gestureState) => {

const { sliderWidth, sliderHeight } =this.props;

        let frameStart =0;

        let frameTop =0;

        frameTop =this.touchTop + gestureState.dy;

        frameStart =this.touchStart + gestureState.dx;

        if (frameStart <0) {

frameStart =0;

        }else if (frameStart + sliderWidth >this.containerBounds.width -2) {

frameStart =this.containerBounds.width - sliderWidth -2;

        }

if (frameTop <0) {

frameTop =0;

        }else if (frameTop + sliderHeight >this.containerBounds.height -2 *

this.containerBorderHeight) {

frameTop =this.containerBounds.height - sliderHeight -2 *this.containerBorderHeight;

        }

this.setState({ frameStart, frameTop });

      },

      onPanResponderRelease: (e, gesture) => {

this.setState({

// eslint-disable-next-line react/no-unused-state

          isAddNewSessionModal:true,

          // eslint-disable-next-line react/no-unused-state

          isAddNewSession:false,

        });

      },

    });

  }

render() {

const { frameStart, frameTop } =this.state;

    const { sliderHeight, sliderWidth } =this.props;

    return (

        style={styles.holder}

onLayout={event => {

const { layout } = event.nativeEvent;

          this.containerBounds.width = layout.width;

        }}

>

          style={{

left: frameStart,

            top: frameTop,

            height: sliderHeight,

            width: sliderWidth,

            backgroundColor:'transparent',

          }}

{...this._panResponder.panHandlers}

>

          {this.props.children}

    );

  }

}

HandTouchMove.propTypes = {

sliderWidth: PropTypes.number,

  sliderHeight: PropTypes.number,

};

HandTouchMove.defaultProps = {

sliderWidth:200,

  sliderHeight:200,

};

const styles =StyleSheet.create({

holder: {

height:ScreenHeight /1.5,

    width:ScreenWidth,

    flexDirection:'row',

    backgroundColor:'transparent',

    justifyContent:'space-between',

    borderRadius:6,

  },

});

export default HandTouchMove;

相关文章

  • 2021-05-20 整个屏幕触发拖动平移位置

    import React, { PureComponent }from 'react'; import PropT...

  • 仿微信朋友圈图片拖拽到底部删除效果实现

    效果展示 效果分析 一组图片长按触发拖拽 原位置图片消失, 跟手拖动 拖动到底部时图片消失, 否则回弹原位置 实现...

  • js的拖动相关

    拖动相关的事件 dragstart: 被拖动元素 开始拖动 时触发的事件。 drag: 被拖动元素 拖动过程 触发...

  • 布局拼图功能实现

    一、功能简述 二、布局模板 三、布局功能实现构建矩形边框模型构建图片缩放平移模型布局绘制事件触发边框拖动规则图片缩...

  • Maya(四) 视图操作

    旋转视图: ALT + 拖动鼠标左键 缩放视图: ALT + 拖动鼠标右键 平移视图: ALT + 拖动鼠标中键 ...

  • 工业设计软件:Catia快捷键

    The most important 平移:中键 缩放 :ctrl + 中键 中键,右键,放开右键,拖动鼠标...

  • 怎么实现页面节点的拖动?

    解决这个问题要考虑以下几个因素:1.被拖动的节点是否脱离文档流?2.整个过程会触发几个事件? a.被拖动的节点是要...

  • OpenGL代码注释5.0

    基于时间动画 2.绘制地面 使得大球位置平移(3.0)向屏幕里面 大球自转 5.获取光源位置,指定合适的着色器(点...

  • 2018-07-27

    ondrag事件在元素或者选取的文本被拖动时触发 在拖动目标上触发事件(源元素): 2.释放目标时触发的事件 在拖...

  • swift ios scrollview滑动开始滑动结束

    笔记:scrollview开始拖动滑动有触发一系列事件,滑动结束触发一系列事件。 scrollview拖动的时候,...

网友评论

      本文标题:2021-05-20 整个屏幕触发拖动平移位置

      本文链接:https://www.haomeiwen.com/subject/vybvjltx.html