在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),再把

图片移回来,这样看到的动画效果就是以图片为中心的缩放.

最新文章

  1. Server.Transfer方式(或称HttpContext方式)传值实例
  2. C#调用C++DLL的小总结5---和C++的DLL的联合调试
  3. 中石油—2的幂次方(power)
  4. 针对各种浏览器css不兼容的写法
  5. 为steghide实现字典破解功能
  6. ExtJS 自定义组件
  7. IOS 表视图(UITableVIew)的使用方法(3)名单的索引显示
  8. [ Android 五种数据存储方式之二 ] —— 文件存储数据
  9. Spring+SpringMVC+MyBatis+easyUI整合基础篇(十二)阶段总结
  10. Gazebo機器人仿真學習探索筆記(二)基本使用說明
  11. Oracle使用游标查询指定数据表的所有字段名称组合而成的字符串
  12. SharpZipLib压缩解压的使用
  13. <数据结构基础学习>(四)链表 Part 1
  14. poj2594 机器人寻找宝藏(最小路径覆盖)
  15. vue2.0 源码解读(二)
  16. 题解【bzoj4650 [NOI2016]优秀的拆分】
  17. flask-数据库模型设计2
  18. 自己写的 Readini 类
  19. SVN - 简单使用手册
  20. 关键字final和override

热门文章

  1. arm-elf-gcc交叉编译器的使用教程
  2. [shell基础]——paste命令
  3. Sqrt(x)
  4. java笔试题(4)
  5. 11.2Daily Scrum
  6. BICEP单元测试计划-四则运算-测试
  7. 团队开发---NABC分析
  8. Spring MVC 环境搭建(二)
  9. django Forgienkey字段 在前台用js做处理
  10. Oracle系列教程