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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值