/*
* 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 MoveAnimation implements Animation {
private boolean mFirstFrame = true;
private float mStartX;
private float mStartY;
private float mTargetX;
private float mTargetY;
private long mAnimationTimeMS = 100;
private long mTotalTime = 0;
private MoveAnimationListener mMoveAnimationListener;
/*
* (non-Javadoc)
*
* @see
* com.polites.android.Animation#update(com.polites.android.GestureImageView
* , long)
*/
@Override
public boolean update(GestureImageView view, long time) {
mTotalTime += time;
if (mFirstFrame) {
mFirstFrame = false;
mStartX = view.getImageX();
mStartY = view.getImageY();
}
if (mTotalTime < mAnimationTimeMS) {
float ratio = (float) mTotalTime / mAnimationTimeMS;
float newX = ((mTargetX - mStartX) * ratio) + mStartX;
float newY = ((mTargetY - mStartY) * ratio) + mStartY;
if (mMoveAnimationListener != null) {
mMoveAnimationListener.onMove(newX, newY);
}
return true;
} else {
if (mMoveAnimationListener != null) {
mMoveAnimationListener.onMove(mTargetX, mTargetY);
}
}
return false;
}
public void reset() {
mFirstFrame = true;
mTotalTime = 0;
}
public float getTargetX() {
return mTargetX;
}
public void setTargetX(float targetX) {
this.mTargetX = targetX;
}
public float getTargetY() {
return mTargetY;
}
public void setTargetY(float targetY) {
this.mTargetY = targetY;
}
public long getAnimationTimeMS() {
return mAnimationTimeMS;
}
public void setAnimationTimeMS(long animationTimeMS) {
this.mAnimationTimeMS = animationTimeMS;
}
public void setMoveAnimationListener(
MoveAnimationListener moveAnimationListener) {
this.mMoveAnimationListener = moveAnimationListener;
}
}