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事件中,用自己的方式实现对划动操作的分析,虽然是比较麻烦,但是实际效果却比这个好。
呵呵,最后希望有此方面开发经验的朋友,能分享你的意见,或者是处理的技巧。
- android中使用GestureDetector.OnGestureListener对触屏事件进行分析的使用后感
- android中的划屏事件 GestureDetector.OnGestureListener 详解(二)
- android中的划屏事件 GestureDetector.OnGestureListener 详解(一)
- android中的划屏事件 GestureDetector.OnGestureListener 详解(三)
- Android的Activity屏幕切换动画||GestureDetector、OnGestureListener实现滑屏事件
- (笔记)Android的OnGestureListener中onFling()的使用注意
- Android — GestureDetector.OnGestureListener 详解
- android-GestureDetector的使用-随心
- 手势事件(GestureDetector)API的使用
- GestureDetector的实现 (GestureDetector.OnDoubleTapListener GestureDetector.OnGestureListener)
- GestureDetector.OnGestureListener
- GestureDetector.OnGestureListener
- 安卓中利用OnGestureListener对控件进行手势滑动事件的处理
- Android GestureDetector使用详解
- 使用GestureDetector进行手势监测
- 使用GestureDetector进行手势识别
- 使用GestureDetector进行手势识别
- 【Android】滑动屏幕效果GestureDetector、OnGestureListener、ViewFlipper
- 常见互联网技术地址汇总
- 链式结构的队(练习)
- Mixer编程
- C#启动窗体的制作—基于线程技术实现
- 外设位宽为8、16、32时,CPU与外设之间地址线的连接方法
- android中使用GestureDetector.OnGestureListener对触屏事件进行分析的使用后感
- C/C++/C#/Java程序员的Ruby第二天
- 深入分析存储器的位宽及与C的关系
- 因为sudo apt-get install oss4-dkms oss4-base oss4-gtk ,造成找不到音效卡
- Nor Flash中的一些术语
- nginx subrequest的实现解析
- 再发一些有关SOP封装的文章……
- Th major functions of Pthread
- Flex动态添加组件例子 Flex如何动态添加组件