Loading core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java +60 −54 Original line number Diff line number Diff line Loading @@ -449,27 +449,25 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { final int action = event.getAction(); boolean handled = false; float x = event.getX(); float y = event.getY(); switch (action) { case MotionEvent.ACTION_DOWN: handleDown(x, y); handleDown(event); handled = true; break; case MotionEvent.ACTION_MOVE: handleMove(x, y); handleMove(event); handled = true; break; case MotionEvent.ACTION_UP: handleUp(x, y); handleMove(x, y); handleMove(event); handleUp(event); handled = true; break; case MotionEvent.ACTION_CANCEL: handleMove(x, y); handleMove(event); handled = true; break; } Loading @@ -483,7 +481,9 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { mHandleDrawable.setY(y); } private void handleDown(float x, float y) { private void handleDown(MotionEvent event) { final float x = event.getX(); final float y = event.getY(); final float dx = x - mWaveCenterX; final float dy = y - mWaveCenterY; if (dist2(dx,dy) <= square(mTapRadius)) { Loading @@ -498,16 +498,21 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { } } private void handleUp(float x, float y) { private void handleUp(MotionEvent event) { if (DEBUG && mDragging) Log.v(TAG, "** Handle RELEASE"); switchToState(STATE_FINISH, x, y); switchToState(STATE_FINISH, event.getX(), event.getY()); } private void handleMove(float x, float y) { private void handleMove(MotionEvent event) { if (!mDragging) { return; } int activeTarget = -1; final int historySize = event.getHistorySize(); for (int k = 0; k < historySize + 1; k++) { float x = k < historySize ? event.getHistoricalX(k) : event.getX(); float y = k < historySize ? event.getHistoricalY(k) : event.getY(); float tx = x - mWaveCenterX; float ty = y - mWaveCenterY; float touchRadius = (float) Math.sqrt(dist2(tx, ty)); Loading @@ -515,7 +520,6 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { float limitX = mWaveCenterX + tx * scale; float limitY = mWaveCenterY + ty * scale; int activeTarget = -1; boolean singleTarget = mTargetDrawables.size() == 1; if (singleTarget) { // Snap to outer ring if there's only one target Loading Loading @@ -558,6 +562,8 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { moveHandleTo(x, y, false); mHandleDrawable.setAlpha(1.0f); } } // Draw handle outside parent's bounds invalidateGlobalRegion(mHandleDrawable); Loading Loading
core/java/com/android/internal/widget/multiwaveview/MultiWaveView.java +60 −54 Original line number Diff line number Diff line Loading @@ -449,27 +449,25 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { final int action = event.getAction(); boolean handled = false; float x = event.getX(); float y = event.getY(); switch (action) { case MotionEvent.ACTION_DOWN: handleDown(x, y); handleDown(event); handled = true; break; case MotionEvent.ACTION_MOVE: handleMove(x, y); handleMove(event); handled = true; break; case MotionEvent.ACTION_UP: handleUp(x, y); handleMove(x, y); handleMove(event); handleUp(event); handled = true; break; case MotionEvent.ACTION_CANCEL: handleMove(x, y); handleMove(event); handled = true; break; } Loading @@ -483,7 +481,9 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { mHandleDrawable.setY(y); } private void handleDown(float x, float y) { private void handleDown(MotionEvent event) { final float x = event.getX(); final float y = event.getY(); final float dx = x - mWaveCenterX; final float dy = y - mWaveCenterY; if (dist2(dx,dy) <= square(mTapRadius)) { Loading @@ -498,16 +498,21 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { } } private void handleUp(float x, float y) { private void handleUp(MotionEvent event) { if (DEBUG && mDragging) Log.v(TAG, "** Handle RELEASE"); switchToState(STATE_FINISH, x, y); switchToState(STATE_FINISH, event.getX(), event.getY()); } private void handleMove(float x, float y) { private void handleMove(MotionEvent event) { if (!mDragging) { return; } int activeTarget = -1; final int historySize = event.getHistorySize(); for (int k = 0; k < historySize + 1; k++) { float x = k < historySize ? event.getHistoricalX(k) : event.getX(); float y = k < historySize ? event.getHistoricalY(k) : event.getY(); float tx = x - mWaveCenterX; float ty = y - mWaveCenterY; float touchRadius = (float) Math.sqrt(dist2(tx, ty)); Loading @@ -515,7 +520,6 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { float limitX = mWaveCenterX + tx * scale; float limitY = mWaveCenterY + ty * scale; int activeTarget = -1; boolean singleTarget = mTargetDrawables.size() == 1; if (singleTarget) { // Snap to outer ring if there's only one target Loading Loading @@ -558,6 +562,8 @@ public class MultiWaveView extends View implements AnimatorUpdateListener { moveHandleTo(x, y, false); mHandleDrawable.setAlpha(1.0f); } } // Draw handle outside parent's bounds invalidateGlobalRegion(mHandleDrawable); Loading