在Android中,对图片的处理需要使用到Matrix类,Matrix是一个3 x 3的矩阵,他对图片的处理分为四个基本类型:
1、Translate
2、Scale
3、Rotate
4、Skew
camera.save() 这句话是将当前的摄像头位置保存下来,以便变换进行完成后恢复成原位,接下来调用camera.translate,这个方法接受3个参数,分别是x,y,z三个轴的偏移量,
我们这里只将z轴进行了偏移,已开始的偏移是3000,随着时间的推移,这个偏移会越来越小。这就会形成这样一个效果,我们的View从一个很远的地方向我们移过来,越来越近,
最终移到了我们的窗口上面~
camera.rotateY(360 * interpolatedTime) 这句话,是给我们的View加上旋转效果,在移动的过程中,视图还会移Y轴为中心进行旋转。随后的 camera.getMatrix(matrix) ,
将我们刚才定义的一系列变换应用到变换矩阵上面,调用完这句之后,我们就可以恢复camera的位置,以便下一次再使用。
matrix.setScale(interpolatedTime, interpolatedTime); matrix.preTranslate(-centerX, -centerY); matrix.postTranslate(centerX, centerY); //注:centerX和centerY是界面中心的坐标
经常在中心缩放的应用中看到这段代码.preTranslate是指在setScale前平移,postTranslate是指在setScale后平移。注意他们参数是平移的距离,而不是平移目的地的坐标!
由于缩放是以(0,0)为中心的,所以为了把界面的中心与(0,0)对齐,就要preTranslate(-centerX, -centerY), setScale完成后,调用postTranslate(centerX, centerY),再把
图片移回来,这样看到的动画效果就是以图片为中心的缩放.