最近開發一個股票交易的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; }