Android 自定义View之使用Camera与Matrix实现3D效果

1.Camera简介


Android中共有两个Camera类,导包时请注意。


android.graphics.Camera:3D开发

android.hardware.Camera:相机开发


官方介绍

A camera instance can be used to compute 3D transformations and generate a matrix that can be applied, for instance, on aCanvas。

一个照相机实例可以被用于计算3D变换,生成一个可以被使用的Matrix矩阵,一个实例,用在画布上。


Camera内部机制实际上还是opengl,不过大大简化了使用。




2.Camera常用方法


2.1.

方法:Camera()

作用:创建一个没有任何转换效果的新的Camera实例。


2.2.

方法:applyToCanvas(Canvas canvas)

作用:根据当前的变换计算出相应的矩阵,然后应用到制定的画布上。


2.3.

方法:getLocationX()

作用:获取Camera的x坐标。


2.4.

方法:getLocationY()

作用:获取Camera的y坐标。


2.5.

方法:getLocationZ()

作用:获取Camera的z坐标。


2.6.

方法:getMatrix(Matrixmatrix)

作用:获取转换效果后的Matrix对象。


2.7.

方法:restore()

作用:恢复保存的状态。


2.8.

方法:rotate(float x, float y, float z)

作用:沿X、Y、Z坐标进行旋转。


2.9.

方法:rotateX(float deg)

作用:X轴进行旋转。


2.10.

方法:rotateY(float deg)

作用:Y轴进行旋转。


2.11.

方法:rotateZ(float deg)

作用:Z轴进行旋转。


2.12.

方法:save()

作用:保存状态。


2.13.

方法:setLocation(float x, float y, float z)

作用:设置X、Y、Z轴位置


2.14.

方法:translate(float x, float y, float z)

作用:沿X、Y、Z轴进行平移





3.Matrix常用方法

Android 自定义View之使用Matrix(矩阵)操作图片




4.Camera坐标系

Camera的坐标系是左手坐标系。当手机平整的放在桌面上,X轴是手机的水平方向,Y轴是手机的竖直方向,Z轴是垂直于手机向里的那个方向。


camera位于坐标点(0,0),也就是视图的左上角。

camera.translate(10,50,-180)的意思是把观察物体右移(+x)10,上移(+y)50,向-z轴移180(即让物体接近camera,这样物体将会变大)。



猜你喜欢

转载自blog.csdn.net/weixin_37730482/article/details/80597951