private AnimationUpdateListener updateListener;
private int mWidth;
public AnimationUpdateListener getUpdateListener() {
return updateListener;
}
public void setUpdateListener(AnimationUpdateListener updateListener) {
this.updateListener = updateListener;
}
public Rotate3DAnimation(float mFromDegrees, float mToDegrees) {
this.mFromDegrees = mFromDegrees;
this.mToDegrees = mToDegrees;
}
@Override
public void initialize(int width, int height, int parentWidth, int parentHeight) {
super.initialize(width, height, parentWidth, parentHeight);
mWidth = width;
mCenterX = width / 2;
mCenterY = height / 2;
mCamera = new Camera();
}
@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
float degress = mFromDegrees + (interpolatedTime * (mToDegrees - mFromDegrees));
if(updateListener != null){
updateListener.onProgressUpdate(interpolatedTime,degress);
}
Matrix matrix = t.getMatrix();
mCamera.save();
//让旋转90度的时候不显的太大
if(interpolatedTime >= 0.5){
mCamera.translate(0,0,(Math.abs(interpolatedTime - 1) / 0.5f) * mWidth / 2);
}