Android自定义View(五)Matrix应用详解

本文详细介绍了Android中Matrix类的使用,包括构造函数、数值操作、矩阵变换方法如setRotate、setScale、setTranslate等。还探讨了前乘与后乘的区别,并通过实例展示了mapPoints、mapRect、setPolyToPoly等方法的应用,帮助理解Matrix如何影响图形的旋转、缩放、错切和位置变化。
摘要由CSDN通过智能技术生成

上次我们讲到了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


                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值