/* * Copyright (c) 2012 Jason Polites Licensed under the Apache License, Version * 2.0 (the "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law * or agreed to in writing, software distributed under the License is * distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * KIND, either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package com.tweetlanes.android.core.widget.gestureimageview; /** * @author Jason Polites */ public class FlingAnimation implements Animation { private float mVelocityX; private float mVelocityY; private float mFactor = 0.85f; private FlingAnimationListener listener; /* * (non-Javadoc) * * @see * com.polites.android.Transformer#update(com.polites.android.GestureImageView * , long) */ @Override public boolean update(GestureImageView view, long time) { float seconds = (float) time / 1000.0f; float dx = mVelocityX * seconds; float dy = mVelocityY * seconds; mVelocityX *= mFactor; mVelocityY *= mFactor; float threshold = 10; boolean active = (Math.abs(mVelocityX) > threshold && Math .abs(mVelocityY) > threshold); if (listener != null) { listener.onMove(dx, dy); if (!active) { listener.onComplete(); } } return active; } public void setVelocityX(float velocityX) { this.mVelocityX = velocityX; } public void setVelocityY(float velocityY) { this.mVelocityY = velocityY; } public void setFactor(float factor) { this.mFactor = factor; } public void setListener(FlingAnimationListener listener) { this.listener = listener; } }