当前位置: 首页 > 编程日记 > 正文

【摘录】GestureDector使用

boolean  onDoubleTap(MotionEvent e)
解释:双击的第二下Touch down时触发
boolean  onDoubleTapEvent(MotionEvent e)
解释:双击的第二下Touch down和up都会触发,可用e.getAction()区分。
boolean  onDown(MotionEvent e)
解释:Touch down时触发
boolean  onFling(MotionEvent e1, MotionEvent e2, float velocityX, float velocityY)
解释:Touch了滑动一点距离后,up时触发。
void  onLongPress(MotionEvent e)
解释:Touch了不移动一直Touch down时触发
boolean  onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY)
解释:Touch了滑动时触发。
void  onShowPress(MotionEvent e)
解释:Touch了还没有滑动时触发
(与onDown,onLongPress比较
onDown只要Touch down一定立刻触发。
而Touchdown后过一会没有滑动先触发onShowPress再是onLongPress。
所以Touchdown后一直不滑动,onDown->onShowPress->onLongPress这个顺序触发。

boolean  onSingleTapConfirmed(MotionEvent e)
boolean  onSingleTapUp(MotionEvent e)
解释:上面这两个函数都是在touch down后又没有滑动(onScroll),又没有长按(onLongPress),然后Touchup时触发。

点击一下非常快的(不滑动)Touchup:
onDown->onSingleTapUp->onSingleTapConfirmed

点击一下稍微慢点的(不滑动)Touchup:
onDown->onShowPress->onSingleTapUp->onSingleTapConfirmed

有了这么多的响应方式,我们能更加方便的对用户的触摸操作进行响应,对各种动作都有所对应。那么这个类如何使用呢,其实非常简单,在view的新建一个GestureDetector的对象。构造函数里
gestureDetector = new GestureDetector(new SelfGestureDetectorListener());

然后在View的onTouchEvent里以下这样用,就可以在gestureDetector的事件里写自己的代码了。
@Override
public boolean onTouchEvent(MotionEvent event) {
    gestureDetector.onTouchEvent(event);
}

有关上面的 onTouchEvent方法,我们可以直接判断MotionEvent的类型,对于手势移动仅仅捕获ACTION_MOVE即可,我们通过参数 MotionEvent e1, MotionEvent e2,float distanceX, float distanceY可以获取操作变化。

比如 distanceX > 0 向右边移动,distanceX < 0 则向左边,distanceY > 0 向上滚动, distanceY < 0 向下滚动。测试时我们可以封装该类,每个方法触发时使用Logcat打印出动作和x,y坐标即可了解实际的状况,更深入和复杂的手势探测,Android 开发网将在下次写到。

转载于:https://www.cnblogs.com/IamEasy_Man/archive/2011/05/06/2039092.html

相关文章:

IDEA新建springboot项目发生错误

idea新建spring boot项目 选择这个默认的Default 之后弹出提示框如下 这个时候首先试一下更换一下网络&#xff0c;我用的是wifi就换成热点&#xff0c;就可以了&#xff0c;是因为网络的问题

windows form窗体应用程序,建一个记事本参考代码,重点是打开,保存,另存为...

//当点击打开的时候private string files; //建一个成员变量&#xff0c;用来存储打开的路径private void 打开OToolStripMenuItem_Click(object sender, EventArgs e){//openFileDialog1.Filter "文本文件|*txt|视频文件|*avi;*jpg"; //filter建立一个筛选器//ope…

『参考』.net CF组件编程(4)——为自定义组件添加工具箱图标!

前言&#xff1a; 在前三篇的文章中&#xff0c;和大家一起创建了一个用于TCP连接检测的小组件&#xff0c;如果你记不得了&#xff0c;可以通过以下链接去回顾一下&#xff1a; 『参考』.net CF组件编程&#xff08;1&#xff09;——基础之后 『参考』.net CF组件编程…

vs2010设置boost开发环境

1. 编译boost类库 2. 设置vs2010的环境 <1>. 编译boost类库 前面一篇文章介绍了如何在linux下建立boost的开发环境&#xff0c;并且编写了一个测试程序&#xff0c;这里将试着在windows下编译boost&#xff0c;同时设置vs2010的开发环境&#xff0c;使用vs来作为开发的…

怎样把字符1变成数字1

直接使用字符bai1减去字符0即可&#xff0c;如&#xff1a;‘1’-0’ 解释&#xff1a; 这样做可行是因为字符0到字符9在ascii编码时是连续的&#xff0c;字符0的ascii值是48&#xff0c;字符1的ascii值是49&#xff0c;其他数字字符依次往后排&#xff0c;而ascii值实际上就…

C#基础篇--文件(流)

1&#xff1a;Path类是专门用来操作文件路径的&#xff08;Path类是静态类&#xff09;&#xff1a;当然用字符串的处理办法也能实现。 string str "C:\Users\成才\Desktop\Hashtable.txt";//返回文件名Console.WriteLine(Path.GetFileName(str));//返回文件名&…

adoquery查询结果如何赋给一个变量(delphi和c++ builder)

我用的是adoquery进行数据库查询&#xff0c;但是我不想把查询的结果显示出来&#xff0c;只是想赋给一个变量&#xff0c;请问我这个变量该怎样去设置呢 &#xff1f; 回复人&#xff1a;sunriver 回复时间&#xff1a;2005-6-3 9:11:00procedure TForm1.Button1Click(Sender:…

pdf格式转换成jpg的简单教程

如何将pdf文件在线免费转换成jpg图片&#xff1f;因为文件保存为图片的形式比较容易查看&#xff0c;因此小伙伴们在编辑完pdf文件之后都会将其保存为jpg图片。那究竟应如何将pdf文件在线转换成图片呢&#xff1f;我们在网上也可以找到很多工具&#xff0c;但是转换效果却是不尽…

npm should be run outside of the Node.js REPL, in your normal shell

错误&#xff1a; npm should be run outside of the Node.js REPL, in your normal shell 在搭建vue环境时报错&#xff0c; 设置缓存文件夹 npm config set cache "D:\vueProject\nodejs\node_cache"和 设置全局模块存放路径 npm config set prefix “D:\vueProjec…

php错误封装类

1、创建MyErrorHandler.php文件 代码如下&#xff1a; <?php class MyErrorHandler {public $message;public $filename;public $line;public $vars array();protected $_noticeLog F:\root\noticeLog.log;public function __construct ($message,$filename,$line,$vars)…

sqlserver 与 mysql 联合更新两个表 区别

sqlserver:UPDATE a SET a.gradeb.id FROM userinfo a,levelinfo b WHERE a.exp>b.minvalue AND a.exp<b.maxvaluemysql:UPDATE userinfo a,levelinfo b SET a.gradeb.id WHERE a.exp>b.minvalue AND a.exp<b.maxvalue转载于:https://www.cnblogs.com/andy_tigger/…

Django web框架

Web框架 web 框架本质 - Web应用本质上就是一个socket服务端&#xff0c;而用户的浏览器就是一个socket客户端。 HTTP协议 HTTP协议介绍HTTP协议对收发消息的格式要求每个HTTP请求和响应都遵循相同的格式&#xff0c;一个HTTP包含Header和Body两部分&#xff0c;其中Body是可…

输入vue ui没反应

在cmd中输入 vue ui没有反应 输入 vue -h查看&#xff0c;发现是版本太低&#xff0c;根本没有ui 这是因为vue的版本太低导致的&#xff0c; 输入cnpm i -g vue/cli 升级脚手架即可 升级完成后&#xff0c;输入vue -h 最后输入vue ui即可

Windows 10 开发日记(五)-- 当Binding遇到异步 -- 解决方案

前文再续&#xff0c;上一章提出了问题&#xff0c;本章提出了三种解决方案&#xff1a; 解决方案一&#xff1a;手动进行异步转换,核心思想:将binding做的事情放入CodeBehind FilterItemControl.XAML: <Grid><Image x:Name"FilterImage" Stretch"Unif…

java实现局域网内单对单和多对多通信的设计思路

这个看起来是很简单的&#xff0c;不就是socket吗&#xff0c;但是&#xff0c;要想有一个好的用户体验&#xff0c;还是很难的&#xff0c;主要问题有&#xff1a; 既然是局域网&#xff0c;那么就必然没有一个固定的IP地址作为主机&#xff0c;这个问题怎么解决&#xff1f; …

GIT - 拉取其他仓库的某个分支的代码

场景 在A仓库拉取B仓库develop分支的代码到A的本地分支 步骤 查看本地已有的远程仓库git remote // 查看远程仓库的名字 发现只有A-v 更加详细的远程仓库说明 复制代码添加远程仓库git remote add BName Bgiturl // 添加远程仓库 BNname别名 Bgiturl远程的git地址 复制代码添…

fetchMetadata: sill install loadAllDepsIntoIdealTree

在搭建vue项目的时候出现报错如下 fetchMetadata: sill install loadAllDepsIntoIdealTree 先输入 npm install -g cnpm --registryhttps://registry.npm.taobao.org 在输入cnpm install

redmine忘记username和password

环境&#xff1a; Ubuntu 13.10 bitnami-redmine-2.5.1-1-linux-x64-installer.run 用bitnami安装完redmine以后&#xff0c;有是否忘记了username和password。可是又没有配置邮件server&#xff0c;无法找回password。 仅仅能去server更改了。更改过程例如以下&#xff1a; 1…

SpringBoot b2b2c 多用户商城系统(十五)Springboot整合RabbitMQ...

这篇文章带你了解怎么整合RabbitMQ服务器&#xff0c;并且通过它怎么去发送和接收消息。我将构建一个springboot工程&#xff0c;通过RabbitTemplate去通过MessageListenerAdapter去订阅一个POJO类型的消息。 准备工作15minIDEAmaven 3.0在开始构建项目之前&#xff0c;机器需要…

SQLite 日期类型(转)

SQLite日期类型 简单示例: SELECT datetime(CHANGE_DATE,localtime), strftime(%Y-%m-%d,CHANGE_DATE,localtime), datetime(now,localtime), strftime(%Y-%m-%d,now,localtime), DATE(now,localtime), time(now,Localtime), time(2010-11-27 01:…

Visual Studio Code常用插件

名称 功能 Chinese (Simplified) Language Pack for Visual Studio Code 汉化 VSCode Auto Close Tag 自动为写的html标签进行闭 合 Beautify 代码格式化 Element UI Snippets Element UI的代码提示功能 Material Icon Theme 为项目换上相应的图标 Vetur对vue代码进行高亮 View…

sqlserver导入excel的电话号码(身份证)变为科学计数解决方式

如果excel中有一列存的是手机号码或者身份证号码&#xff0c;那么导入到sql中时&#xff0c;会把手机或者身份证当作数字格式对待&#xff0c;因而会以科学记数法的形式存在sqlserver表中&#xff0c;解决方式&#xff0c;先将excel文件另存为文本文件&#xff08;制表符&#…

Git的其他用法

2019独角兽企业重金招聘Python工程师标准>>> 目录&#xff1a; 减少【.git】文件夹的大小和文件数更换git for windows的文本编辑器修改已经提交的commit说明合并commit解决merge时出现的冲突回退一个merge获取某一commit的修改将低版本push到Github&#xff08;删掉…

UE中的几个极有用功能

1. 指定目录和文件类型批量查找目标字符串 示例&#xff1a;在H:\qtdemo目录&#xff08;含子目录&#xff09;中下的*.h和*.cpp中&#xff0c;查找“main”字符串 查找结果&#xff1a; 2. 在当前活动窗口中查找目标字符串&#xff08;Ctrl F&#xff09; &#xff08;1&…

Missing space before value for key ‘routes‘ key-spacing

vue项目报错&#xff1a; Missing space before value for key ‘routes’ key-spacing 解决办法&#xff1a; 字母new前面应该是1个空格&#xff0c;我写了两个空格&#xff0c;删去一个空格即可

Oracle Mutex 机制 说明

之前也整理过一篇文章来说明Oracle Lock的&#xff0c;参考&#xff1a; 锁 死锁 阻塞 Latch 等待 详解 http://blog.csdn.net/tianlesoftware/archive/2010/08/19/5822674.aspx 在这篇文章里&#xff0c;提到了System Locks&#xff0c;它包含&#xff1a; &#xff08;1&…

POJ-1860-Currency Exchange

链接&#xff1a;https://vjudge.net/problem/POJ-1860 题意&#xff1a; 有N个点&#xff0c;支持货币兑换&#xff0c;从货币a->b手续费c&#xff0c;汇率r。 求能否换一圈使总净额增加。 思路&#xff1a; bellman-ford。 找一个正权回路。 代码&#xff1a; #include &l…

如果asp.net mvc中某个action被执行了两次,请检查是不是以下的原因

注释 <link rel"icon" href"#"> 这一句后试试转载于:https://www.cnblogs.com/lummon/p/4559185.html

vue常见错误汇总(自看)

解决办法汇总 eslint: Expected indentation of 2 spaces but found 4缩进报错 &#xff0c;所有缩进只能用两个空格 Newline required at end of file but not found需要在最后的后面再加一行!!! Missing space before value for key ‘name’在关键字“值”之前缺少空格 …

IOS的钥匙串,确保本地隐私数据的安全

* 苹果的"生态圈"&#xff0c;钥匙串访问&#xff0c;使用 AES 256 加密算法&#xff0c;能够保证用户密码的安全 * 钥匙串访问SDK&#xff0c;是苹果在 iOS 7.0.3 版本以后公布的 * 钥匙串访问的接口是纯 C 语言的&#xff0c;但是&#xff0c;网络上有框架把它封装…