RN 手势响应系统基本用法和获取坐标判断用户手势方向
1. 基本使用,
注意两点
(1)将手势系统的函数放在“componentWillMount”生命周期函数里面,当时会有警告,警告自己看吧
(2)将方法使用ES6扩展运算符展开
import React from 'react';
import {Text,View} from 'react-native'; export default class DetailScreen extends React.Component{
UNSAFE_componentWillMount(){
// 申请成为触摸事件响应者 -> 成为触摸事件响应者 -> 处理触摸事件 -> 释放触摸事件 -> 触摸事件结束
let [beginX,beginY,endX,endY] = [0,0,0,0];
this.gestureHandlers = {
onMoveShouldSetResponder: (evt) => {
console.log('onMoveShouldSetResponder');
return true;
},
// 现在要开始响应触摸事件了。这也是需要做高亮的时候,使用户知道他到底点到了哪里。
onResponderGrant:(event)=>{
console.log('onResponderGrant');
console.log(event.nativeEvent);
let obj = event.nativeEvent;
beginX = parseInt(obj.locationX);
beginY = parseInt(obj.locationY);
}, //具体响应事件:(1)用户正在屏幕上移动手指时 ,“注意”触发次数过于频繁
onResponderMove:(event)=>{
console.log('用户正在移动手指,且没离开');
},
onResponderRelease:(event)=>{
console.log('手指移动后,释放');
console.log(event.nativeEvent);
let obj = event.nativeEvent;
endX = parseInt(obj.locationX);
endY = parseInt(obj.locationY);
let result = Math.abs(endX-beginX)>Math.abs(endY-beginY)
if(result){
console.log('横向移动之后,判断是做正负');
if(endX>beginX){
console.log('向右');
console.log(this.props);
}else{
console.log('向左'); }
}else{
console.log('竖向移动');
}
}
}
}
render(){
return (
<View
style={{flex:1,backgroundColor:'yellow'}}
{...this.gestureHandlers}
>
<Text>详情界面</Text>
</View>
)
}
}
*** 判断手势方向 , 我定义了 四个变量 (beginX,beginY,endX,EndY),在 onResponderGrant函数里,获得初始位置坐标 , 在onResponderRelease函数里,获取最终位置坐标,之后,先判断,是横向移动还是竖向移动,确定好了方向,再通过正负值,判断具体方向
RN 手势响应系统基本用法和获取坐标判断用户手势方向的更多相关文章
- 【React Native】进阶指南之二(手势响应系统)
移动设备上的手势识别要比在 web 上复杂得多.用户的一次触摸操作的真实意图是什么,App 要经过好几个阶段才能判断.比如 App 需要判断用户的触摸到底是在滚动页面,还是滑动一个 widget,或者 ...
- iOS开发——运行时OC篇&使用运行时获取系统的属性:使用自己的手势修改系统自带的手势
使用运行时获取系统的属性:使用自己的手势修改系统自带的手势 有的时候我需要实现一个功能,但是没有想到很好的方法或者想到了方法只是那个方法实现起来太麻烦,一或者确实为了装逼,我们就会想到iOS开发中最牛 ...
- 手势响应 ,避免点击多个cell同时响应同一手势多次,只响应第一个cell
http://www.cnblogs.com/wfwenchao/articles/3700205.html UIView除了负责展示内容给用户外还负责响应用户事件.本章主要介绍UIView用户交互相 ...
- 使用Vue2+webpack+Es6快速开发一个移动端项目,封装属于自己的jsonpAPI和手势响应式组件
导语 最近看到不少使用vue制作的音乐播放器,挺好玩的,本来工作中也经常使用Vue,一起交流学习,好的话点个star哦 本项目特点如下 : 1. 原生js封装自己的跨域请求函数,支持promise调用 ...
- 基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统)
基于meanshift的手势跟踪与电脑鼠标控制(手势交互系统) zouxy09@qq.com http://blog.csdn.net/zouxy09 一年多前开始接触计算机视觉这个领域的时候,年幼无 ...
- 如何获取系统Home(Launcher)应用判断用户是否处于home界面
要把我们的应用程序作为home(launcher应用),只需要在AndroidManifest.xml中添加: <category android:name="android.inte ...
- [转]android系统各种音量的获取与设置
获取系统音量 通过程序获取android系统手机的铃声和音量.同样,设置铃声和音量的方法也很简单! 设置音量的方法也很简单,AudioManager提供了方法:publicvoidsetStreamV ...
- android系统权限SET_PREFERRED_APPLICATIONS怎么获取
最近自己写个demo,需要用到SET_PREFERRED_APPLICATIONS权限 在网上找了半天,大概有两种方式: 1. 将手机root后,把apk强行push到system/app目录下,重启 ...
- [转载]树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像
树莓派新版系统上使用mjpg-streamer获取USB摄像头和树莓派专用摄像头RaspiCamera图像 网上有很多关于mjpg-stream移植到树莓派的文章,大部分还是使用的sourceforg ...
- react native 手势响应
参考地址:https://www.jianshu.com/p/935e5c6a5064 官方文档地址:https://facebook.github.io/react-native/docs/panr ...
随机推荐
- vue面试题及答案(1)
vue面试题,知识点汇总(有答案) 一. Vue 核心小知识点 1.vue 中 key 值的作用 key 的特殊属性主要用在 Vue 的虚拟 DOM 算法,在新旧 nodes 对比时辨识 VN ...
- k8s Service yaml文件编写
apiVersion: app/v1 #API的版本号,版本号可以用 kubectl api-versions 查询到 kind: Service #表明资源对象,例如Pod.RC.Service.N ...
- Kubernetes-Pod进阶
目录: 资源限制 CPU资源单位 内存资源单位 重启策略 健康检查/探针 探针的三种规则 Probe支持三种检查方法 总结 Pod 进阶 资源限制 当定义 Pod 时可以选择性地为每个容器设定所需要的 ...
- 设置apt安装软件时是否保留下载的deb包(apt不清理/apt下载软件包)
原文:https://blog.csdn.net/FoxBryant/article/details/123226245 不喜欢CSDN,记录一下. 默认情况下使用apt install安装包时,会自 ...
- VsCode C++ 语法检测失效不标红色波浪线 解决办法
如果enable Squiggles 无效,按照下图里配置设置解决问题. 如图:
- wpf 解决画图模糊或抗锯齿以及文字模糊或抗锯齿问题
解决方案中使用的.Net FrameWork版本:4.6.1 画图模糊或抗锯齿: 控件属性加入 SnapsToDevicePixels="True" 文字模糊或抗锯齿: 控件属性 ...
- Ios安装charles
1.浏览器打开chls.pro/ssh,不会弹出下载证书,所以使用以下方式: 2. 然后打开设置,可以看到描述文件,安装 检查:在"设置"-"描述文件"-查看描 ...
- Mybatis拦截器,修改Date类型数据。设置毫秒为0
1:背景 Mysql自动将datetime类型的毫秒数四舍五入,比如代码中传入的Date类型的数据值为 2021.03.31 23:59:59.700 到数据库 2021.04.01 0 ...
- Linux 系统jdk安装详细教程
安装jdk步骤先下载jdk的tar压缩包然后解压jdk并压缩至指定安装目录,如果不需要指定安装目录直接写tar -zxvf jdk压缩包名即可tar -zxvf jdk压缩包 -C /这里写指定安装目 ...
- js中常用的运算符
1. ?. 链接运算符 特性: 一旦遇到空置就会终止 例子: let name = obj?.name persion.getTip?.() // 没有getTip 方法则不会执行 2. ?? 空值合 ...