Camera这个类位于Graphics包下,一看便知是与绘图有关。
顾名思义,Camera类的名字非常好的反映了这个类的功能:Camera类就是可以提供一种照相机的视角来展示图片。我们可以这样想象,图是静止的,竖直的放在三维空间的原点坐标,人拿着照相机从各个位置为图片拍照,这样我们就可以得到各个视角的图片的“照片”,把这些“照片”显示出来,就呈现出了3D效果,如果是连续展示,就出现了动画效果。
似乎Camera类不能单独起作用,要和Metrix(矩阵)类一起使用,矩阵在图像变换中的作用十分重要。说到矩阵我就忍不住吐槽啊,我一正宗的北方小伙在四川读书容易么我,大一就碰上教线性代数的一奇葩老太太,一嘴的川普啊,完全不管我的感受有木有,完全听不懂有木有,老子一个学期都云里雾里的考试前自学了一个月才考过了有木有!毁人不倦啊,我这辈子都忘不了这老太太了,还教材作者呢,我呸!
【转】以下转自:android.graphics.Camera实现图像的旋转、缩放,配合Matrix实现图像的倾斜
个人总结Camera与Matrix的一些区别如下:
- Camera的rotate()相关方法是指定某一维度上旋转指定的角度。
- Matrix的rotate()相关方法实现的效果是顺时针旋转指定的角度;与Camera指定Z轴旋转效果相同,但方向相反。
- Camera的translate()方法根据某一维度上视点的位移实现图像的缩放,与Matrix的scale()相关方法作用效果相似,只是Matrix的scale()相关方法是直接指定缩放比例。
- Camera不支持倾斜操作,Matrix可以直接实现倾斜操作。
Camera的处理结果只是生成一个Matrix,该Matrix用于Bitmap或Canvas绘制Bitmap时才能产生旋转或缩放的效果。
自己写了一个小Demo,简单易懂,有兴趣可以拿去看看: