public class MyAnimation extends Animation {
 int mCenterX,mCenterY;
 Camera camera = new Camera();
 public MyAnimation() {
 }
 @Override
 protected void applyTransformation(float interpolatedTime, Transformation t) {
  Matrix matrix = t.getMatrix();  
  camera.save();
  camera.translate(0f, 0f, (1300 - 1300*interpolatedTime));
  camera.rotateY(360*interpolatedTime);
  camera.getMatrix(matrix);
  matrix.preTranslate(-mCenterX, -mCenterY);
  matrix.postTranslate(mCenterX,mCenterY);
  camera.restore();
 }
 @Override
 public void initialize(int width, int height, int parentWidth,
   int parentHeight) {
  super.initialize(width, height, parentWidth, parentHeight);
  //初始化中间坐标
  mCenterX = width/2;
  mCenterY = height/2;
  setDuration(2000);
  setFillAfter(true);
  setInterpolator(new LinearInterpolator());
 }
}camera.translate(0.0f, 0.0f, (1300 - 1300.0f * interpolatedTime))在第一次调用的时候interpolatedTime值为0,相当于把ImageView在Z轴后移1300像素,然后逐步的往前移动到0,同时camera.rotateY(360 * interpolatedTime)函数又把ImageView沿Y轴翻转360度
                










