`
iflytek_wjzhu
  • 浏览: 39202 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
最近访客 更多访客>>
社区版块
存档分类
最新评论

Android日记之2012\01\10

阅读更多
       嗯,今天似乎也没干什么事啊。。。。基本上一天的时间都花在触屏手势的判断上了。
       其实主要是为了实现一个VideoView的全屏播放,需求是希望做成两手指外拉,全屏,两手指向里缩,恢复成正常大小。原来是用SimpleOnGestureListener()中的onDoubleTap来实现的全屏。但毕竟和需求不符,需要改。一开始尝试的是SimpleOnGestureListener()的onFling取其中的velocityX来和一个固定值比较,可以实现滑动的判断,但是这个只能用于单指。不过至少离目标也近了一步了嘛。
       之后看了一些别人的例子和文档,就索性直接在OnTouch中,通过event的值来判断了。通过输出发现了这4个比较有用的值: MotionEvent.ACTION_DOWN、MotionEvent.ACTION_MOVE、MotionEvent.ACTION_POINTER_DOWN、MotionEvent.ACTION_POINTER_UP。当一个手指按下去后,触发的是ACTION_DOWN,只要手指不抬起来,只触发一次,之后便全是ACTIONMOVE了,当另一个手指按下去并且抬起来的时候,分别触发的是ACTION_POINTER_DOWN和ACTION_POINTER_UP。发现这4个值的时候是欣喜若狂啊,发现问题可以解决了。于是乎,在这4个值下分别来获得一个坐标点。但是,ACTION_MOVE下是一串点,一个通过event.getPointerCount()来获得这个点串的长度,就好比是一个list,event.getX(event.getPointerCount()-1)来获得最后一个点的坐标。然后再做逻辑判断,比较当ACTION_POINTER_UP和ACTION_MOVE的X轴差大于ACTION_POINTER_DOWN和ACTION_DOWN的X轴差时,为全屏,反之则为普通状态。运行时,全屏的效果是明显的,但是缩不回来了。一查,发下ACTION_DOWN和ACTION_POINTER_DOWN的坐标点是一样的,所以逻辑判断上就有了偏差。之后只能判断ACTION_POINTER_UP和ACTION_MOVE的X轴差大于一个固定值时为全屏,ACTION_POINTER_UP和ACTION_MOVE的X轴差小于一个固定值时,为普通状态。
       其实,对于Y轴的判断类似,就不多写了,而且在写这篇日记的时候,突然想到完全可以不用ACTION_MOVE,而用ACTION_UP来获得点值,呵呵,明天到了公司去测试下,毕竟感觉ACTION_MOVE也有点不靠谱。也希望大神们能在多点手势判断上给点意见~~~。
0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics