自定义控件只捕获手势点击事件,如果发生了滑动手势则放弃捕获
2016-05-27 16:07
267 查看
在写五子棋的棋盘,自定义view的时候,onTouchEvent()方法中一直在纠结怎么处理点击事件
1.我需要捕捉用户点击棋盘的位置,从而进行落子操作
2.按照正常的操作习惯,如果点击了屏幕,但是用户后悔了,就会把手指往边上滑动,从而表示取消此次操作
完成这个效果的思路是:
1.记录用户手指点击屏幕时的坐标
2.记录用户手指离开屏幕时的坐标
3.计算up-down的差值,这里可以自定义一个差值限制,比如10,如果差值的绝对值(用户手指不一定是左滑还是右滑,所以是绝对值)大于10,则表示view对此次手势不感兴趣
思路很简单,实现也很简单,虽然说简单,虽然确实也很简单,但也消磨了我不少时间琢磨。
贴一下代码
private boolean isMove = false;//用户手指是否滑动
private int down_x;//手指落下时的x坐标
private int down_y;//手指落下时的y坐标
1.我需要捕捉用户点击棋盘的位置,从而进行落子操作
2.按照正常的操作习惯,如果点击了屏幕,但是用户后悔了,就会把手指往边上滑动,从而表示取消此次操作
完成这个效果的思路是:
1.记录用户手指点击屏幕时的坐标
2.记录用户手指离开屏幕时的坐标
3.计算up-down的差值,这里可以自定义一个差值限制,比如10,如果差值的绝对值(用户手指不一定是左滑还是右滑,所以是绝对值)大于10,则表示view对此次手势不感兴趣
思路很简单,实现也很简单,虽然说简单,虽然确实也很简单,但也消磨了我不少时间琢磨。
贴一下代码
private boolean isMove = false;//用户手指是否滑动
private int down_x;//手指落下时的x坐标
private int down_y;//手指落下时的y坐标
--这里之所以要把这三个变量声明在函数外,是因为每次手势变动(落下,滑动,抬起)都会调用onTouchEvent,如果定义在函数内,则每次调用都会被初始化,值会被改变 @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) {//手指落下的时候记录下坐标 down_x = (int) event.getX(); down_y = (int) event.getY(); return true; } if (event.getAction() == MotionEvent.ACTION_MOVE) {//手指移动的时候记录移动的坐标 if (Math.abs(event.getX() - down_x) > 10 || Math.abs(event.getY() - down_y) > 10) {//如果差值的绝对值大于设定阀值,则表示滑动了手指,对手势不感兴趣 isMove = true;//滑动了手指 } return false; } if (event.getAction() == MotionEvent.ACTION_UP) {//当用户手指离开屏幕的时候 if (isMove) {//如果移动了,将isMove重新设置为false,重新等待下一次手势操作 isMove = false; return false; } ………… ………… …………//可以在此进行相应逻辑操作 return true; } return true; }
相关文章推荐
- 移动手机APP手指滑动切换图片特效附源码下载
- Android App中自定义View视图的实例教程
- android中使用Activity实现监听手指上下左右滑动
- Android中自定义View实现圆环等待及相关的音量调节效果
- 浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详解
- 自定义ViewGroup (3) 与子View之间 Touch Event的拦截与处理
- 自定义图表控件--同时显示柱状图和折线图
- android自定义View的用法
- android自定义控件实例
- 自定义view的自定义属性的引用
- android 自定义View onMeasure
- android在自定义View的xml中设置自定义的成员属性
- View与ViewGroup--实现QQ左滑删除
- 自定义android进度条
- android基础之自定义view
- 关于自定义View的一些总结
- 自定义创建View
- 【Android】自定义View实现信封红蓝边/收货地址线条
- 自定义View(一)
- Android自定义组件:一个波浪形的组件