博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
React-Native PanResponder手势识别器
阅读量:7234 次
发布时间:2019-06-29

本文共 1986 字,大约阅读时间需要 6 分钟。

hot3.png

PanResponder类可以将多点触摸操作协调成一个手势。它使得一个单点触摸可以接受更多的触摸操作,也可以用于识别简单的多点触摸手势 它提供了一个对触摸响应系统响应器的可预测的包装。对于每一个处理函数,它在原生事件之外提供了一个新的gestureState对象。

原生事件nativeEvent

  • changedTouches - 在上一次事件之后,所有发生变化的触摸事件的数组集合(即上一次事件后,所有移动过的触摸点)
  • identifier - 触摸点的ID
  • locationX - 触摸点相对于父元素的横坐标
  • locationY - 触摸点相对于父元素的纵坐标
  • pageX - 触摸点相对于根元素的横坐标
  • pageY - 触摸点相对于根元素的纵坐标
  • target - 触摸点所在的元素ID
  • timestamp - 触摸事件的时间戳,可用于移动速度的计算
  • touches - 当前屏幕上的所有触摸点的集合

gestureState对象的属性

  • stateID - 触摸状态的ID。在屏幕上有至少一个触摸点的情况下,这个ID会一直有效。
  • moveX - 最近一次移动时的屏幕横坐标
  • moveY - 最近一次移动时的屏幕纵坐标
  • x0 - 当响应器产生时的屏幕坐标
  • y0 - 当响应器产生时的屏幕坐标
  • dx - 从触摸操作开始时的累计横向路程
  • dy - 从触摸操作开始时的累计纵向路程
  • vx - 当前的横向移动速度
  • vy - 当前的纵向移动速度
  • numberActiveTouches - 当前在屏幕上的有效触摸点的数量

首先在componentWillMount添加监视器

componentWillMount() {           // 添加监视器    componentWillMount() {         this._PanResponder = PanResponder.create({            onStartShouldSetPanResponder: () => true,            //点击回调            onPanResponderGrant:this._onPanResponderGrant.bind(this),            //滑动回调            onPanResponderMove:this._onPanResponderMove.bind(this),        });    };
//event原生事件    //gestureState对象    _onPanResponderGrant(event,gestureState){        let touchPointX = gestureState.x0        let progress = touchPointX / width;        console.log(touchPointX,width,progress);        this.setState({progress:progress,});    };    _onPanResponderMove(event,gestureState) {        let touchMoveX = gestureState.moveX        let progress = touchMoveX / width;        console.log(touchMoveX,width,progress);        this.setState({progress:progress});     }

页面布局

constructor(props) {        super(props);        this.state = {            progress : 0,            _PanResponder:null        }    }; render() {        return (              
当前百分比{Math.round(this.state.progress * 100)}%
{/*由于progress比较小,所有用一个背景透明的view来响应事件*/}
); };

输入图片说明代码地址:

不要的吝啬你的赞赏和☆

转载于:https://my.oschina.net/roycehe/blog/871505

你可能感兴趣的文章
servlet 开发出错原因分析
查看>>
查看数据库字符集
查看>>
C语言小程序-基于链表的学生信息管理
查看>>
Java编程——一个景区根据游人的年龄收取不同价格的门票。请编写游人类,根据年龄段决定能够购买的门票价格并输出,然后写出测试类测试该类(类的基本实现)...
查看>>
c语言小程序
查看>>
微信小程序点击图片放大预览
查看>>
绝对路径和相对路径
查看>>
HTNL5列表,表格,音频,视频,iframe内联框架
查看>>
php数组遍历顺序原理(转)
查看>>
搜索二叉树
查看>>
C/C++打印堆栈信息
查看>>
外部程序调用跨数据库的语句时:该事务管理器已经禁止了它对远程/网络事务的支持...
查看>>
Chronometer 计时器使用
查看>>
node.js 多异步之间的协作方案
查看>>
有点烦
查看>>
ES 5 中 判断数组的方法
查看>>
续前篇-关于逆波兰表达式的计算
查看>>
【java】java学习之路-01-Linux基础(一)
查看>>
IIS下配置PHP
查看>>
netbeans 正则替换
查看>>