@Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { scaleXAnimation.start(); scaleYAnimation.start(); } else { // cancel animations so we can grab the view during previous animation scaleXAnimation.cancel(); scaleYAnimation.cancel(); // pass touch event to ScaleGestureDetector scaleGestureDetector.onTouchEvent(event); } return true; } };
public void onClick(View v) { anim.cancel(); anim.setStartValue(-700); anim.start(); } });
@Override public boolean onTouch(View v, MotionEvent event) { switch (event.getActionMasked()){ case MotionEvent.ACTION_DOWN: // capture the difference between view's top left corner and touch point dX = v.getX() - event.getRawX(); dY = v.getY() - event.getRawY(); // cancel animations xAnimation.cancel(); yAnimation.cancel(); break; case MotionEvent.ACTION_MOVE: // a different approach would be to change the view's LayoutParams. animatedView.animate() .x(event.getRawX() + dX) .y(event.getRawY() + dY) .setDuration(0) .start(); break; case MotionEvent.ACTION_UP: xAnimation.start(); yAnimation.start(); break; } return true; } };
@Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // calculate the difference between touch point(event.getRawX()) on view & view's top left corner(v.getX()) mXDiffInTouchPointAndViewTopLeftCorner = event.getRawX() - v.getX(); mYDiffInTouchPointAndViewTopLeftCorner = event.getRawY() - v.getY(); // cancel spring animations mSpringTranslationXAnimation.cancel(); mSpringTranslationYAnimation.cancel(); break; case MotionEvent.ACTION_MOVE: float newTopLeftX = event.getRawX() - mXDiffInTouchPointAndViewTopLeftCorner; float newTopLeftY = event.getRawY() - mYDiffInTouchPointAndViewTopLeftCorner; mViewToBeAnimated.setX(newTopLeftX); mViewToBeAnimated.setY(newTopLeftY); break; case MotionEvent.ACTION_UP: mSpringTranslationXAnimation.start(); mSpringTranslationYAnimation.start(); break; } return true; } };
&& motionEvent.getY() <= img.getY() + img.getHeight(); anim.cancel();
private void cancel() { animator.cancel(); spring.cancel(); fling.cancel(); fling.removeUpdateListener(updateListener); fling.removeEndListener(endListener); isFlinging = false; } }
@Override public boolean onTouch(View view, MotionEvent event) { centerX = view.getWidth() / 2.0; centerY = view.getHeight() / 2.0; x = event.getX(); y = event.getY(); switch (event.getActionMasked()) { case MotionEvent.ACTION_DOWN: // cancel so we can grab the view during previous animation rotationAnimation.cancel(); updateRotation(view); break; case MotionEvent.ACTION_MOVE: // save current rotation previousRotation = currentRotation; updateRotation(view); // rotate view by angle difference float angle = currentRotation - previousRotation; view.setRotation(view.getRotation() + angle);// += angle; updateInfoView(); break; case MotionEvent.ACTION_UP: rotationAnimation.start(); break; } return true; } };
private void cancel() { isFlinging = false; animator.cancel(); spring.cancel(); fling.cancel(); fling.removeUpdateListener(updateListener); fling.removeEndListener(endListener); } }