Matrix中文意思是矩阵,在android中Matrix代表的就是一个3x3的矩阵,Matrix主要用在图片处理上,它可以对图片进行缩放、平移、旋转等,下面逐一分析Matrix的各个函数。
Matrix():构造函数,新建一个标准的矩阵,也就是3x3的单位矩阵
Matrix(Matrix m):构造函数,创建一个m为样本的矩阵,若m为null则创建一个标准矩阵
void getValues(float[] values):将矩阵的值存入values数组中
boolean invert(Matrix inverse):若矩阵的逆矩阵存在,将逆矩阵赋值给inverse,并返回true,否则返回false
boolean isIdentity():判断该矩阵是否为标准矩阵
void mapPoints(float[] dst,int dstIndex,float[] src,int srcIndex,int pointCount):将matrix作用于二维点src,并将变化后的点存入dst中
dst:(x,y)表示点的坐标
src:同上
dtsIndex:第一个dst点的索引
srcIndex:第一个src点的索引
pointCount:点个总数
void mapPoints(float[] dst,float[] src):将matrix作用于二维点src,并将变化后的点存入dst中
void mapPoints(float[] pts):将matrix作用于pts,并将变化后的点写入pts中,pts=[x0,y0,x1,y1......]包含多个点
float mapRadius(float radius):将matrix作用于半径为radius的圆,并返回作用后的圆半径
boolean mapRect(RectF dst,RectF src):将matrix作用于矩形src,并将改变后的矩形存到dst中,返回rectStaysRect()的结果
boolean mapRect(Rectf rect):将matrix作用于矩形rect,并将改变后的矩形存到rect中,返回rectStaysRect()的结果
void mapVectors(float[] dst,int dstIndex,float[] src,int srcIndex,int pointCount):将matrix作用于二维向量src,并将改变后的向量存入dst中,dstIndex表示第一个dst向量的索引,pointCount为向量的总个数
void mapVectors(float[] dst,float[] src):将matrix作用于向量src,并将改变后的向量存入dst中
void mapVectors(float[] vecs):将matrix作用于vecs,并将改变后的结果存入vecs中,vecs的形式为{x0,y0,x1,y1......}
void postConcat(Matrix other):other左乘matrix,即matrix=other*matrix
void postRotate(float degrees):旋转矩阵左乘matrix,即matrix=R(degrees)*matrix
void postRotate(float degrees,float dx,float dy):matrix=R(degrees,dx,dy)*matrix
void postTranslate(float dx,float dy):matrix=T(dx,dy)*matrix
void postScale(float sx,float sy):matrix=S(sx,sy)*matrix
void postScale(float sx,float sy,float dx,float dy):matrix=S(sx,sy,dx,dy)*matrix
void postSkew(float kx,float ky):matrix=K(kx,ky)*matrix
void postSkew(float kx,float ky.float dx,float dy):matrix=K(kx,ky,dx,dy)*matrix
void preConcat(Metrix other):other右乘matrix,即matrix=matrix*other
preRotate,preTranslate,preScale,preSkew:将对应的post的左乘改为右乘即可
boolean rectStaysRect():如果matrix作用于一个矩形得到的还是一个矩形就返回true,否则返回false
void reset():使matrix成为标准矩阵
void setConcat(matrix other):将matrix设置为other,即matrix=other
void setRotate,setScale,setTranslate与post,pre的区别在于,set要先reset()再执行左乘(右乘也一样)
void setRecTtoRect(RectF src,RectF dst,Matrix.ScaleToFit stf):matrix作用于src能得到矩形dst则返回true,否则返回false
void setValues(float[] values):将数组中的值赋值给matrix