对于一个视频开发的人员来说,特别是一个刚刚涉足VideoView的人来说,自己写VideoView写一个播放器或者说是利用视频播放的框架来编写VideoView的人来说,都避免不了要对VideoView的屏幕手势进行判断来进行声音、亮度、视频的进度的操作,同时这是手势也有这冲突之处,如何避免或者说是减少误差行的滑动错误,这时候就需要对自己的需求需求进行考量了。
本人对视频的滑动解析如下:
对屏幕进行分割成对称的E 和F区域,在E区域进行亮度的调节+视频进度调节,在F区域进行音量的调节+视频进度的调节。这样就可以对音量和亮度的调节起到不互相冲突,接下来就是考虑到视频进度的调节了,在视频进度的调节方面中,我们可以看到的快退或者是快进的时候,我们可以不按常规出牌(斜向上或者是斜向斜滑动),对于这种不按套路出牌的也是测试员经常干的吧,当然作为程序员的我们要考虑到客户的所有“未来的手势”,给我们带来的BUG。言归正传,在此时我们需要的是判断到底是上下滑动还是在横下滑动,那么问题就来了,当你在斜着滑动的时候上下左右都是在滑动的,你可能要说了:其实判断下那个滑动的距离大不就行了,思路的确是正确的。我当时也是这么做了,但是在你滑动稍微不是很快的时候,这时候就会出现,视频进度和亮度或者视频进度和音量调节在同时在滑动中,这是你就要吧这个考虑在内了。解决这个,你需要加一个关键值判断就行了,可以通过尝试试出来。
本人的代码如下,仅供参考,关键值还是需要Coder们自己把握了:
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN://按下的逻辑处理
break;
case MotionEvent.ACTION_UP://弹起的逻辑处理
break;
case MotionEvent.ACTION_MOVE:
//移动逻辑
int screenWidth = ScreenUtils.getScreenWidth(getContext());
float yMove = actionDownCoordinates[1] - event.getY();
float xMove = event.getX() - actionDownCoordinates[0];
actionDownCoordinates[0] = event.getX();
actionDownCoordinates[1] = event.getY();
//将屏幕分成7份,中间5份,两边各自1份
if ((Math.abs(xMove) + 5) < Math.abs(yMove)) {//竖向调节
if (screenWidth / 2 > event.getX()) {//调试亮度
}
if (screenWidth / 2 < event.getX()) {//调试声音
}
}
if (Math.abs(yMove) + 5 < Math.abs(xMove)) {//横向调节
}
break;
}
return true;
}
---------------------
作者:RelinRan
来源:CSDN
原文:https://blog.csdn.net/u012127961/article/details/54378587
版权声明:本文为博主原创文章,转载请附上博文链接!