上次我们讲到了Matrix的原理,知道了Matrix内部其实就是通过矩阵计算去映射坐标变化的,还有矩阵前乘和后乘的区别等等
这篇文章主要讲解Matrix相关方法的使用,先来看一下matrix主要有哪些方法,如下表:
方法类别 | 相关API | 摘要 |
---|---|---|
数值操作 | set reset setValues getValues | 设置、 重置、 设置数值、 获取数值 |
数值计算 | mapPoints mapRadius mapRect mapVectors | 通过matrix映射得到新的数值 |
设置(set) | setConcat setRotate setScale setSkew setTranslate | 设置变换 |
前乘(pre) | preConcat preRotate preScale preSkew preTranslate | 前乘变换 |
后乘(post) | postConcat postRotate postScale postSkew postTranslate | 后乘变换 |
其他方法 | setPolyToPoly setRectToRect rectStaysRect setSinCos | 一些特殊操作 |
矩阵相关 | invert isAffine isIdentity | 求逆矩阵、 是否为仿射矩阵、 是否为单位矩阵 |
一、Matrix方法解析
1.构造函数
public Matrix()
public Matrix(Matrix src)
无参构造函数会创建一个单位矩阵,有参构造函数会创建一个跟参数src一样的matrix
2.数值操作
①、set 和reset
void set (Matrix src)
void reset ()
set方法是将参数矩阵src复制到当前矩阵中
reset相当于重置,将当前矩阵重置为单位矩阵
②、setValues 和getValues
void setValues (float[] values)
void getValues (float[] values)
setValues是将参数values数组的前9位数赋值给当前matrix,因为matrix为3x3矩阵,所以参数values数组的大小必须大于9;赋值顺序为:1~3位赋值给矩阵第一行,4~6位赋值给矩阵第二行,7~9位赋值矩阵第三行
getValues是将当前matrix的数值赋值给参数values数组的前9位,同样values的大小也必须大于9
3.设置(set)
调用set方法以后,新的数值会覆盖原来矩阵的数值,相当于给矩阵重新赋值
①、setContact
public boolean setConcat(Matrix a,Matrix b)
这是官方提供的矩阵计算方法:
c.setContact(a,b)相当于:c = a x b;就是将参数两个矩阵相乘然后赋值给当前矩阵
②、setRotate setScale setSkew setTranslate
就是旋转、缩放、错切、转移的set方法了,很简单也就不再详述了
4.前乘(pre)系列、后乘(post)系列
在创建符合矩阵的时候会用到前乘或者后乘,关于前乘和后乘的区别,在上一篇:Android自定义View(三) Matrix的原理解析 已经阐述过,使用的时候要特别注意这一点
5.数值计算方法
①、mapPoints