* Update

* Update

* Update

* Update

* Update

* Update

* Update

* Update

* Update

* Update

* Update

* Update
This commit is contained in:
sloop
2016-06-26 21:49:00 +08:00
committed by GitHub
parent 5c3db916b4
commit 55350baaf4

View File

@@ -1,42 +1,34 @@
# Matrix基础
前面扯了四篇 Path 相关的内容,本次终于要到了大家期盼已久的 Matrix,没错,就是传说中的黑客帝国:
前面扯了四篇 Path 相关的内容,本次终于要到了大家期盼已久的 Matrix(传说中的黑客帝国!!!):
![](http://ww1.sinaimg.cn/large/005Xtdi2jw1f4oyx5i8wbj308c0bj3zz.jpg)
勇敢的骚年啊,你是选择红药丸还是选择蓝药丸呢?
如题,本篇的主角是 Matrix(其实并不是黑客帝国来着)。
仔细回想一下,我们在很多地方都见过 Matrix(画布操作drawBitmappath 等) 感觉它就像是一个烦人家伙,什么事情都想插上一脚。 然而实际情况却并非如此, Matrix 一直都在我们看不到的地方默默付出着, 如果没有了 Matrix 我们之前的很多方法都是无法运行的。
这么说来 Matrix 也算个厉害人物,那么这个 Matrix 到底是何方神圣呢?
>
我选蓝色的,不要问我为什么
#### Matrix 的翻译过来是矩阵模型。和其释义相同Matrix是一个矩阵其作用则是一个模型一个控制视图状态的模型
![](http://ww1.sinaimg.cn/large/005Xtdi2jw1f4pji1l0lej308c04pwer.jpg)
好了,言止于此,不能说更多了,下面开始我们本篇的正题。
## 前言
如题,本篇的主角是 Matrix在 Canvas 中很多地方都有 Matrix 的身影,如: 画布操作drawBitmappath 等。几乎无处不在,那么 Matrix 到底是干什么的呢?
>
**Matrix 的翻译过来是矩阵模型。和其释义相同Matrix是一个矩阵其作用则是一个模型一个控制视图状态的模型。**
我们之前在 [Canvas之画布操作](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B3%5DCanvas_Convert.md) 中讲解过不少画布相关操作,这些操作的核心就是是操作 Matrix
也就是说, 我们进行界面视图等转换都是需要依靠 Matrix 的帮助的,例如我们之前在 [Canvas之画布操作](https://github.com/GcsSloop/AndroidNote/blob/master/CustomView/Advance/%5B3%5DCanvas_Convert.md) 中讲解过的画布操作,这些操作的核心就是改变 Matrix 的数值。
## Matrix方法表
Matrix 有很多常用和不常用的方法,在本篇中重点不在于这些方法的讲解,而是帮助大家理解 Matrix 的一些基本概念。
方法类别 | 相关API | 摘要
---|---|---
比较 | equals | 比较两个矩阵是否相同
获取数值 | getValues | 获取矩阵的数值
获取哈希值 | hashCode | 获取矩阵的哈希值
获取逆矩阵 | invert | 如果矩阵可逆,获取其逆矩阵
是否是仿射矩阵 | isAffine |判断是否是仿射矩阵
是否是单位矩阵 | isIdentity | 判断是否是单位矩阵
获取变换后位置 | mapPoints | 计算一个点在变换后点的位置
获取变换后位置 | mapRect | 计算一个矩形变换后点位置
获取变换后位置 | mapVectors | 计算一个向量阵列变换后点位置
方法类别 | 相关API | 摘要
-----------|---------------------------------------------------------|-------------------------------------
比较方法 | equals hashCode | 比较、 获取哈希值
基本方法 | set reset setValues getValues | 设置、 重置、 设置数值、 获取数值
矩阵相关 | invert isAffine isIdentity | 计算逆矩阵、 是否是仿射矩阵、 是否是单位矩阵
数值计算 | mapPoints mapRect mapVectors | 计算 点、 矩形、 阵列 经过变换后点位置
设置(set) | setConcat setRotate setScale setSkew setTranslate | 设置变换
前乘(pre) | preConcat preRotate preScale preSkew preTranslate | 前乘变换
后乘(post) | postConcat postRotate postScale postSkew postTranslate | 后乘变换