在使用Android的surfaceView进行一个虚拟摇杆实现的时候,要监听是否长按或者短按surfaceview,进而对不同事件做出不同的逻辑处理,但是当我去重写surfaceview的onlongclicklistener的时候,发现根本没有进入这个回调(当然,这里的onlongclicklistener是view的,但surfaceview是通过继承MockView extends view这样来的,本来应该没有问题,但就是没有调试成功).为了时间缩短,同时,我注意到了另外一种结合timer/timertask就能够解决的问题,因此没有再追究前者的方法为什么没有成功.
整个思路是:在重写的onTouchEvent方法里面,通过对ACTION_DOWN到ACTION_UP这个时间段的监听来判断是否长按/短按,那么这里用timer就是最好的选择了.
主要代码如下:
1.timer和一个全局boolean值定义:
boolean isLongClickModule = false;
private Timer mTimer;
2.在ACTION_DOWN里面实例化整个Timer:
case MotionEvent.ACTION_DOWN:
// 按下
cx = (int) event.getX() - radius;
cy =