最近开发一个股票交易的App,涉及到长按走势图出现十字线的效果,实现原理:重写onTouch事件,在actionDown里面记录当前的downTime时间,在Action_move里面记录当前的eventTime时间,如果eventTime-downTIme大于1000,则视为一次长按事件:核心代码如下:
public boolean onTouchEvent(MotionEvent event) { if(event.getAction()==MotionEvent.ACTION_DOWN){ Log.e("actionDown","进入了x="+x+" y="+y); x= event.getX(); y=event.getY(); downTime=event.getDownTime(); }else if (event.getAction()==MotionEvent.ACTION_MOVE){ x=event.getX(); y=event.getY(); if(event.getEventTime()-downTime>1000){ Log.e("action move", "可以画十字线了"); postInvalidate(); } }else if(event.getAction()==MotionEvent.ACTION_UP){ long time=event.getEventTime(); Log.e("event actionUp",time+" downTime="+event.getDownTime()); } return true; }