锁定老帖子 主题:Android自定义长按事件
精华帖 (0) :: 良好帖 (5) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-02-21
在onTOuch里面监听action-move执行的次数也可以实现longclick,
不知道有没意义,性能怎么样? |
|
返回顶楼 | |
发表时间:2011-02-21
binggo2011 写道 在onTOuch里面监听action-move执行的次数也可以实现longclick,
不知道有没意义,性能怎么样? 不明白,监听action-move执行次数有什么作用?多少次算是longclick? |
|
返回顶楼 | |
发表时间:2011-02-22
chroya 写道 binggo2011 写道 在onTOuch里面监听action-move执行的次数也可以实现longclick, 不知道有没意义,性能怎么样? 不明白,监听action-move执行次数有什么作用?多少次算是longclick? /** * 自定义图片左右手势和类LongClick触发事件 * @author Administrator * */ public abstract class MyOnTouchListener implements OnTouchListener { private static final int MOVE_MIN_DISTANCE = 100; //触发左移或右移的最小距离 private static final int LONG_CLICK_MIN_DISTANCE = 20; //触发LongClick的最大移动距离 private static final int LONG_CLICK_MIN_TIME = 35; //触发LongClick的最小ACTION_MOVE的次数 private float mX; private int mNum = 0; public abstract void setLeftEvent(); public abstract void setRightEvent(); public abstract void setLongClickEvent(); @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mX = event.getX(); return false; case MotionEvent.ACTION_CANCEL: return false; case MotionEvent.ACTION_MOVE: System.out.println("MOVE"); mNum++; return false; case MotionEvent.ACTION_OUTSIDE: return false; case MotionEvent.ACTION_UP: float distance = event.getX() - mX; if (Math.abs(distance) > MOVE_MIN_DISTANCE) { if (distance > 0) setRightEvent(); else setLeftEvent(); } else if (Math.abs(distance) < LONG_CLICK_MIN_DISTANCE && mNum > LONG_CLICK_MIN_TIME) { setLongClickEvent(); } mNum = 0; return true; } return false; } } 我哥介绍看你的博客的 说看了能变超人的... 呃. |
|
返回顶楼 | |
发表时间:2011-02-22
binggo2011 写道 chroya 写道 binggo2011 写道 在onTOuch里面监听action-move执行的次数也可以实现longclick,
不知道有没意义,性能怎么样? 不明白,监听action-move执行次数有什么作用?多少次算是longclick? /** * 自定义图片左右手势和类LongClick触发事件 * @author Administrator * */ public abstract class MyOnTouchListener implements OnTouchListener { private static final int MOVE_MIN_DISTANCE = 100; //触发左移或右移的最小距离 private static final int LONG_CLICK_MIN_DISTANCE = 20; //触发LongClick的最大移动距离 private static final int LONG_CLICK_MIN_TIME = 35; //触发LongClick的最小ACTION_MOVE的次数 private float mX; private int mNum = 0; public abstract void setLeftEvent(); public abstract void setRightEvent(); public abstract void setLongClickEvent(); @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: mX = event.getX(); return false; case MotionEvent.ACTION_CANCEL: return false; case MotionEvent.ACTION_MOVE: System.out.println("MOVE"); mNum++; return false; case MotionEvent.ACTION_OUTSIDE: return false; case MotionEvent.ACTION_UP: float distance = event.getX() - mX; if (Math.abs(distance) > MOVE_MIN_DISTANCE) { if (distance > 0) setRightEvent(); else setLeftEvent(); } else if (Math.abs(distance) < LONG_CLICK_MIN_DISTANCE && mNum > LONG_CLICK_MIN_TIME) { setLongClickEvent(); } mNum = 0; return true; } return false; } } 我哥介绍看你的博客的 说看了能变超人的... 呃. 根据次数判断长按,太不严谨了 ![]() 别被误导了 |
|
返回顶楼 | |
发表时间:2011-05-16
楼主的文章不错
|
|
返回顶楼 | |