public boolean onTouchEvent(MotionEvent event) { boolean handle = false; if (getAlpha() == 0.0f) return false; if (event.getAction() == MotionEvent.ACTION_DOWN) { handle = true; Log.v(TAG, "getY(): " + getY()); Log.v(TAG, "getX(): " + getX()); Log.v(TAG, "event.getRawY(): " + event.getRawY()); Log.v(TAG, "event.getRawX(): " + event.getRawX()); mTouchOffsetY = getY() - event.getRawY(); mTouchOffsetX = getX() - event.getRawX(); mTouchDownX = event.getRawX(); mTouchDownY = event.getRawY(); WidgetRenderer parent = (WidgetRenderer) mWidget.getParent(); parent.widgetPressed(mWidget); } else if (event.getAction() == MotionEvent.ACTION_MOVE) { Log.v(TAG, "2 event.getRawY(): " + event.getRawY()); Log.v(TAG, "2 event.getRawX(): " + event.getRawX()); float driftX = Math.abs(event.getRawX() - mTouchDownX); float driftY = Math.abs(event.getRawY() - mTouchDownY); if (driftX < driftY) { setX(0); Log.v(TAG, "mTouchOffsetY:" + mTouchOffsetY); Log.v(TAG, "event.getRawY() + mTouchOffsetY: " + (event.getRawY() + mTouchOffsetY)); setY(event.getRawY() + mTouchOffsetY); } else { setY(mTargetY); Log.v(TAG, "mTargetY:" + mTargetY); Log.v(TAG, "mTouchOffsetX:" + mTouchOffsetX); Log.v(TAG, "event.getRawX() + mTouchOffsetX: " + (event.getRawX() + mTouchOffsetX)); setX(event.getRawX() + mTouchOffsetX); }