android中使用GestureDetector.OnGestureListener对触屏事件进行分析的使用后感

来源:互联网 发布:淘宝后台填写宝贝 编辑:程序博客网 时间:2024/04/30 17:20

最近在开发android的触屏游戏时,研究了GestureDetector.OnGestureListener这个接口,这里将个人的一些使用感想说一下,也希望对这个有所研究的同行们,发表一下各自意见。同时也想让开始接触这东西的童鞋们,提供一些了解和帮助。另,由于本人只在模拟器做的测试,更希望有在真机环境下使用的同行们,帮忙一起分析下。

首先来讲讲这个接口的原理,其实比较容易理解,就是依赖于View.onTouchEvent这个事件,对从onTouchEvent事件中获得的MotionEvent进行分析,来确定当前所正在进行的触屏操作。也正如该接口的名字:手势探测器(分析器),个人更觉得像分析器。下面,本人再对由该接口响应的几个常用方法进行分析。

onDown(), onShowPress(), onLongPress()这三个方法当进行长触摸时,只会被调用一次。对于onDown()来说,一次很正常,但是onLongPress()只有一次,视乎感觉有点怪异。然而真正让我感到诧异,并写该文章的,是onScroll()。这方法是当手势在屏幕上做移动操作时影响的,与onFling()快速划动相比,响应的作用时间会较长。但该方法最大的问题是:

假如我先进行长触摸,在手未离开屏幕时,再做划动操作,则不会有任何的响应。即使onTouchEvent此时依家会被触发,但onScroll()依然不会被响应,也不会重响应onLongPress方法。

按些推断的话,看来无论onTouchEvent被响应多少次,该分析器也只会对前1-2秒所进行的动作进行分析,除非手部离开屏幕,结束触屏状态,否则在此期间的作用范围内,只会默认是相同的操作。这里或许有人会问,那onScroll也只会响应一次,那也太不靠谱了吧。无错,事实上onScroll并没有只响应一次,只要你在屏幕上不断移动,会被不断响应。

但是,其前题是在最初操作的1-2秒时间内,你做出的,必须是onScroll的移动操作。也就是说,前1-2秒的操作,直接确定了该接口对手势的判定。由此也可以解释,为何在响应了onLongPress后,无法再响应onScroll的原因了。

另外,在搜索资料的时候,有其他人说,在真机的环境下,感应器灵敏,即使你做长按操作,但由于手部的微抖动,也会响应到onScroll方法。而如果按以上的分析推断来说,实际应该是当手部最初触角屏幕时,由于微抖动,实际前1-2秒已经被默认为移动操作了。

最后,我想再结合以上的分析,说说其在游戏开发中的应用。也再一次希望大家给小弟一些建议及交流。通过对GestureDetector响应的测试,由于操作的结果决定于操作的前几秒,给我直接的感觉就是不灵活,对玩家的操作局限性太大啦。而事实的测试也证实在拖动物体的时候,如果只靠onScroll方法所提供的参数作为移动的参考,实际的效果相当不理想。另一方面,在之前的另一个非游戏项目中,本人在View.onTouch事件中,用自己的方式实现对划动操作的分析,虽然是比较麻烦,但是实际效果却比这个好。

呵呵,最后希望有此方面开发经验的朋友,能分享你的意见,或者是处理的技巧。

原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 ctrl加f失效怎么办 电脑字体不显示怎么办 ps背景图锁定了怎么办 索引改不过来怎么办 cad尺寸太小怎么办 加拿大街上看到熊怎么办 无法添加漂流瓶怎么办 解厕所堵塞问题怎么办 安装ps校验失败怎么办 平板打不开机怎么办 台电平板死机怎么办 电视指示灯不亮怎么办 手机不听使唤乱动怎么办 笔记本只有c盘怎么办 印章上印出的全是油怎么办 美工笔太粗怎么办 笔记本电脑速度太慢怎么办 电脑图形处理弱怎么办 戴尔笔记本电脑连不上网络怎么办 系统备份没有了怎么办 cad2014运行很慢怎么办 cad2007运行很慢怎么办 cad运2018行很慢怎么办 800*800图片太大怎么办 ps出现双箭头怎么办 衣服上面染上色怎么办 联想一体机忘记密码怎么办 三星a7手机黑屏怎么办 联想g40很卡怎么办 联想笔记本电脑卡机怎么办 笔记本电脑卡机了怎么办 笔记本电脑卡机动不了怎么办 ps变得很卡怎么办 戴尔笔记本卡了怎么办 戴尔电脑卡死了怎么办 win10显示器颜色不正常怎么办 没有密码重置盘怎么办 美术生英语不好怎么办 mbr分区安装不了怎么办 倒闭的共享单车怎么办 喷水壶喷嘴堵塞怎么办