• public class test extends Activity {   
  •     private static final String TAG = "Test";   
  •     private float mLastMotionX;   
  •     private float mLastMotionY;   
  •     private Handler mKeyHandler;   
  •   
  •     private static final int LONGPRESS_TIMEOUT = ViewConfiguration.getLongPressTimeout();   
  •     private static final int TAP_TIMEOUT = ViewConfiguration.getTapTimeout();   
  •   
  •     /** Called when the activity is first created. */  
  •     @Override  
  •     public void onCreate(Bundle savedInstanceState) {   
  •         super.onCreate(savedInstanceState);   
  •         setContentView(R.layout.main);   
  •   
  •         mKeyHandler = new keyHandler();   
  •   
  •     }   
  •   
  •     private static final int SHOW_PRESS = 1;   
  •     private static final int LONG_PRESS = 2;   
  •     private static final int TAP = 3;   
  •   
  •     private class keyHandler extends Handler {   
  •   
  •         public void handleMessage(Message msg) {   
  •             switch (msg.what) {   
  •   
  •             case SHOW_PRESS:   
  •                 Log.i(TAG, "SHOW_PRESS");   
  •                 break;   
  •   
  •             case LONG_PRESS:   
  •                 Log.i(TAG, "LONG_PRESS");   
  •                 break;   
  •   
  •             case TAP:   
  •                 Log.i(TAG, "TAP");   
  •                 break;   
  •             default:   
  •                 throw new RuntimeException("Unknown message " + msg);   
  •             }   
  •         }   
  •     }   
  •   
  •     private MotionEvent mCurrentDownEvent;   
  •   
  •     public boolean onTouchEvent(MotionEvent event) {   
  •   
  •         final int action = event.getAction();   
  •         final float x = event.getX();   
  •         final float y = event.getY();   
  •   
  •         switch (action) {   
  •   
  •         case MotionEvent.ACTION_DOWN:   
  •             mKeyHandler.removeMessages(LONG_PRESS);   
  •             mKeyHandler.sendEmptyMessageDelayed(LONG_PRESS, LONGPRESS_TIMEOUT);   
  •             if (mCurrentDownEvent != null) {   
  •                 mCurrentDownEvent.recycle();   
  •             }   
  •             mCurrentDownEvent = MotionEvent.obtain(event);   
  •             break;   
  •         case MotionEvent.ACTION_MOVE:   
  •             final int deltaX = (int) (x - mCurrentDownEvent.getX());   
  •             final int deltaY = (int) (y - mCurrentDownEvent.getY());   
  •             int distance = (deltaX * deltaX) + (deltaY * deltaY);   
  •             if (distance > (ViewConfiguration.getTouchSlop() * 2)) {   
  •                 mKeyHandler.removeMessages(LONG_PRESS);   
  •             }   
  •             break;   
  •         case MotionEvent.ACTION_UP:   
  •             mKeyHandler.removeMessages(LONG_PRESS);   
  •             break;   
  •         case MotionEvent.ACTION_CANCEL:   
  •             mKeyHandler.removeMessages(LONG_PRESS);   
  •             break;   
  •   
  •         }   
  •         return true;   
  •     }   
  • }   
arrow
arrow
    全站熱搜

    戮克 發表在 痞客邦 留言(0) 人氣()