public class Matrix
extends Object
java.lang.Object | |
↳ | android.graphics.Matrix |
Matrix类拥有一个3x3矩阵来转换坐标。
Nested classes |
|
---|---|
枚举 |
Matrix.ScaleToFit 控制src rect如何对齐setRectToRect()的dst矩形。 |
Constants |
|
---|---|
int |
MPERSP_0 |
int |
MPERSP_1 |
int |
MPERSP_2 |
int |
MSCALE_X |
int |
MSCALE_Y |
int |
MSKEW_X |
int |
MSKEW_Y |
int |
MTRANS_X |
int |
MTRANS_Y |
Public constructors |
|
---|---|
Matrix() 创建一个单位矩阵 |
|
Matrix(Matrix src) 创建一个矩阵,它是src的(深)副本 |
Public methods |
|
---|---|
boolean |
equals(Object obj) 如果obj是矩阵并且其值等于我们的值,则返回true。 |
void |
getValues(float[] values) 将矩阵中的9个值复制到数组中。 |
int |
hashCode() 返回对象的哈希码值。 |
boolean |
invert(Matrix inverse) 如果这个矩阵可以反转,则返回true,如果inverse不为null,则将inverse设置为该矩阵的逆矩阵。 |
boolean |
isAffine() 获取这个矩阵是否仿射。 |
boolean |
isIdentity() 如果矩阵是标识,则返回true。 |
void |
mapPoints(float[] dst, int dstIndex, float[] src, int srcIndex, int pointCount) 将此矩阵应用于由src指定的2D点阵列,并将变换后的点写入由dst指定的点阵列中。 |
void |
mapPoints(float[] dst, float[] src) 将此矩阵应用于由src指定的2D点阵列,并将变换后的点写入由dst指定的点阵列中。 |
void |
mapPoints(float[] pts) 将此矩阵应用于2D点阵列,并将变换后的点写回到数组中 |
float |
mapRadius(float radius) 在矩阵映射后返回圆的平均半径。 |
boolean |
mapRect(RectF rect) 将这个矩阵应用到矩形中,然后将变换后的矩形写回到矩形中。 |
boolean |
mapRect(RectF dst, RectF src) 将此矩阵应用于src矩形,并将转换后的矩形写入dst。 |
void |
mapVectors(float[] vecs) 将这个矩阵应用到2D矢量阵列中,并将变换后的矢量写回到数组中。 |
void |
mapVectors(float[] dst, int dstIndex, float[] src, int srcIndex, int vectorCount) 将此矩阵应用于由src指定的2D矢量阵列,并将变换后的矢量写入由dst指定的矢量阵列中。 |
void |
mapVectors(float[] dst, float[] src) 将此矩阵应用于由src指定的2D矢量阵列,并将变换后的矢量写入由dst指定的矢量阵列中。 |
boolean |
postConcat(Matrix other) 用指定的矩阵后验矩阵。 |
boolean |
postRotate(float degrees, float px, float py) 用指定的旋转后置矩阵。 |
boolean |
postRotate(float degrees) 用指定的旋转后置矩阵。 |
boolean |
postScale(float sx, float sy, float px, float py) 使用指定的比例后矩阵。 |
boolean |
postScale(float sx, float sy) 使用指定的比例后矩阵。 |
boolean |
postSkew(float kx, float ky) 用指定的偏斜后矩阵。 |
boolean |
postSkew(float kx, float ky, float px, float py) 用指定的偏斜后矩阵。 |
boolean |
postTranslate(float dx, float dy) 用指定的翻译后置矩阵。 |
boolean |
preConcat(Matrix other) 用指定的矩阵预处理矩阵。 |
boolean |
preRotate(float degrees) 用指定的旋转预处理矩阵。 |
boolean |
preRotate(float degrees, float px, float py) 用指定的旋转预处理矩阵。 |
boolean |
preScale(float sx, float sy) 使用指定的比例预处理矩阵。 |
boolean |
preScale(float sx, float sy, float px, float py) 使用指定的比例预处理矩阵。 |
boolean |
preSkew(float kx, float ky) 用指定的偏斜预处理矩阵。 |
boolean |
preSkew(float kx, float ky, float px, float py) 用指定的偏斜预处理矩阵。 |
boolean |
preTranslate(float dx, float dy) 用指定的翻译预处理矩阵。 |
boolean |
rectStaysRect() 如果将矩形映射到另一个矩形,则返回true。 |
void |
reset() 将矩阵设置为标识 |
void |
set(Matrix src) (深)将src矩阵复制到此矩阵中。 |
boolean |
setConcat(Matrix a, Matrix b) 将矩阵设置为两个指定矩阵的连接并返回true。 |
boolean |
setPolyToPoly(float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount) 设置矩阵,使得指定的src点将映射到指定的dst点。 |
boolean |
setRectToRect(RectF src, RectF dst, Matrix.ScaleToFit stf) 将矩阵设置为比例并转换将源矩形映射到目标矩形的值,如果可以表示结果,则返回true。 |
void |
setRotate(float degrees, float px, float py) 将矩阵设置为以指定的度数旋转,其中的轴心点位于(px,py)处。 |
void |
setRotate(float degrees) 将矩阵设置为以(0,0)为中心旋转指定的度数。 |
void |
setScale(float sx, float sy) 将矩阵设置为通过sx和sy进行缩放。 |
void |
setScale(float sx, float sy, float px, float py) 将矩阵设置为通过sx和sy进行缩放,其中的轴心点位于(px,py)处。 |
void |
setSinCos(float sinValue, float cosValue, float px, float py) 将矩阵设置为以指定的正弦和余弦值旋转,其中的轴心点位于(px,py)处。 |
void |
setSinCos(float sinValue, float cosValue) 将矩阵设置为按指定的正弦和余弦值旋转。 |
void |
setSkew(float kx, float ky) 将矩阵设置为通过sx和sy偏斜。 |
void |
setSkew(float kx, float ky, float px, float py) 将矩阵设置为通过sx和sy偏斜,其中的轴心点位于(px,py)处。 |
void |
setTranslate(float dx, float dy) 将矩阵设置为通过(dx,dy)进行平移。 |
void |
setValues(float[] values) 将数组中的9个值复制到矩阵中。 |
String |
toShortString() |
String |
toString() 返回对象的字符串表示形式。 |
Protected methods |
|
---|---|
void |
finalize() 当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
Matrix (Matrix src)
创建一个矩阵,它是src的(深)副本
Parameters | |
---|---|
src |
Matrix : The matrix to copy into this matrix |
boolean equals (Object obj)
如果obj是矩阵并且其值等于我们的值,则返回true。
Parameters | |
---|---|
obj |
Object : the reference object with which to compare. |
Returns | |
---|---|
boolean |
true if this object is the same as the obj argument; false otherwise. |
void getValues (float[] values)
将矩阵中的9个值复制到数组中。
Parameters | |
---|---|
values |
float
|
int hashCode ()
返回对象的哈希码值。 为了散列表的好处而支持此方法,例如由HashMap
提供的HashMap
。
hashCode
的总合同是:
hashCode
method must consistently return the same integer, provided no information used in equals
comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application. equals(Object)
method, then calling the hashCode
method on each of the two objects must produce the same integer result. equals(java.lang.Object)
method, then calling the hashCode
method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables. 尽可能合理实用,由类Object
定义的hashCode方法确实为不同的对象返回不同的整数。 (这通常通过将对象的内部地址转换为整数来实现,但Java TM编程语言不需要此实现技术。)
Returns | |
---|---|
int |
a hash code value for this object. |
boolean invert (Matrix inverse)
如果这个矩阵可以反转,则返回true,如果inverse不为null,则将inverse设置为该矩阵的逆矩阵。 如果这个矩阵不能反转,忽略反转并返回false。
Parameters | |
---|---|
inverse |
Matrix
|
Returns | |
---|---|
boolean |
boolean isAffine ()
获取这个矩阵是否仿射。 仿射矩阵保留直线并且没有视角。
Returns | |
---|---|
boolean |
Whether the matrix is affine. |
boolean isIdentity ()
如果矩阵是标识,则返回true。 这可能比测试更快(getType()== 0)
Returns | |
---|---|
boolean |
void mapPoints (float[] dst, int dstIndex, float[] src, int srcIndex, int pointCount)
将此矩阵应用于由src指定的2D点阵列,并将变换后的点写入由dst指定的点阵列中。 这两个数组将它们的“点”表示为浮点对[x,y]。
Parameters | |
---|---|
dst |
float : The array of dst points (x,y pairs) |
dstIndex |
int : The index of the first [x,y] pair of dst floats |
src |
float : The array of src points (x,y pairs) |
srcIndex |
int : The index of the first [x,y] pair of src floats |
pointCount |
int : The number of points (x,y pairs) to transform |
void mapPoints (float[] dst, float[] src)
将此矩阵应用于由src指定的2D点阵列,并将变换后的点写入由dst指定的点阵列中。 这两个数组将它们的“点”表示为浮点对[x,y]。
Parameters | |
---|---|
dst |
float : The array of dst points (x,y pairs) |
src |
float : The array of src points (x,y pairs) |
void mapPoints (float[] pts)
将此矩阵应用于2D点阵列,并将变换后的点写回到数组中
Parameters | |
---|---|
pts |
float : The array [x0, y0, x1, y1, ...] of points to transform. |
float mapRadius (float radius)
在矩阵映射后返回圆的平均半径。 注:在透视图中,该值假定圆的中心位于原点。
Parameters | |
---|---|
radius |
float
|
Returns | |
---|---|
float |
boolean mapRect (RectF rect)
将这个矩阵应用到矩形中,然后将变换后的矩形写回到矩形中。 这是通过转换矩形的四个角,然后将其设置为这些点的边界来实现的
Parameters | |
---|---|
rect |
RectF : The rectangle to transform. |
Returns | |
---|---|
boolean |
the result of calling rectStaysRect() |
boolean mapRect (RectF dst, RectF src)
将此矩阵应用于src矩形,并将转换后的矩形写入dst。 这是通过转换src的4个角落,然后将dst设置为这些点的边界来实现的。
Parameters | |
---|---|
dst |
RectF : Where the transformed rectangle is written. |
src |
RectF : The original rectangle to be transformed. |
Returns | |
---|---|
boolean |
the result of calling rectStaysRect() |
void mapVectors (float[] vecs)
将这个矩阵应用到2D矢量阵列中,并将变换后的矢量写回到数组中。 注意:此方法不适用与矩阵相关的翻译。 如果您想要应用翻译,请使用mapPoints(float[])
。
Parameters | |
---|---|
vecs |
float : The array [x0, y0, x1, y1, ...] of vectors to transform. |
void mapVectors (float[] dst, int dstIndex, float[] src, int srcIndex, int vectorCount)
将此矩阵应用于由src指定的2D矢量阵列,并将变换后的矢量写入由dst指定的矢量阵列中。 这两个数组将它们的“向量”表示为浮点数对[x,y]。 注意:此方法不适用与矩阵相关的翻译。 如果您想要应用翻译,请使用mapPoints(float[], int, float[], int, int)
。
Parameters | |
---|---|
dst |
float : The array of dst vectors (x,y pairs) |
dstIndex |
int : The index of the first [x,y] pair of dst floats |
src |
float : The array of src vectors (x,y pairs) |
srcIndex |
int : The index of the first [x,y] pair of src floats |
vectorCount |
int : The number of vectors (x,y pairs) to transform |
void mapVectors (float[] dst, float[] src)
将此矩阵应用于由src指定的2D矢量阵列,并将变换后的矢量写入由dst指定的矢量阵列中。 这两个数组将它们的“向量”表示为浮点数对[x,y]。 注意:此方法不适用与矩阵相关的翻译。 如果您想要应用翻译,请使用mapPoints(float[], float[])
。
Parameters | |
---|---|
dst |
float : The array of dst vectors (x,y pairs) |
src |
float : The array of src vectors (x,y pairs) |
boolean postConcat (Matrix other)
用指定的矩阵后验矩阵。 M'=其他* M
Parameters | |
---|---|
other |
Matrix
|
Returns | |
---|---|
boolean |
boolean postRotate (float degrees, float px, float py)
用指定的旋转后置矩阵。 M'= R(度,px,py)* M
Parameters | |
---|---|
degrees |
float
|
px |
float
|
py |
float
|
Returns | |
---|---|
boolean |
boolean postRotate (float degrees)
用指定的旋转后置矩阵。 M'= R(度)* M
Parameters | |
---|---|
degrees |
float
|
Returns | |
---|---|
boolean |
boolean postScale (float sx, float sy, float px, float py)
使用指定的比例后矩阵。 M'= S(sx,sy,px,py)* M
Parameters | |
---|---|
sx |
float
|
sy |
float
|
px |
float
|
py |
float
|
Returns | |
---|---|
boolean |
boolean postScale (float sx, float sy)
使用指定的比例后矩阵。 M'= S(sx,sy)* M
Parameters | |
---|---|
sx |
float
|
sy |
float
|
Returns | |
---|---|
boolean |
boolean postSkew (float kx, float ky)
用指定的偏斜后矩阵。 M'= K(kx,ky)* M
Parameters | |
---|---|
kx |
float
|
ky |
float
|
Returns | |
---|---|
boolean |
boolean postSkew (float kx, float ky, float px, float py)
用指定的偏斜后矩阵。 M'= K(kx,ky,px,py)* M
Parameters | |
---|---|
kx |
float
|
ky |
float
|
px |
float
|
py |
float
|
Returns | |
---|---|
boolean |
boolean postTranslate (float dx, float dy)
用指定的翻译后置矩阵。 M'= T(dx,dy)* M
Parameters | |
---|---|
dx |
float
|
dy |
float
|
Returns | |
---|---|
boolean |
boolean preConcat (Matrix other)
用指定的矩阵预处理矩阵。 M'= M *其他
Parameters | |
---|---|
other |
Matrix
|
Returns | |
---|---|
boolean |
boolean preRotate (float degrees)
用指定的旋转预处理矩阵。 M'= M * R(度)
Parameters | |
---|---|
degrees |
float
|
Returns | |
---|---|
boolean |
boolean preRotate (float degrees, float px, float py)
用指定的旋转预处理矩阵。 M'= M * R(度,px,py)
Parameters | |
---|---|
degrees |
float
|
px |
float
|
py |
float
|
Returns | |
---|---|
boolean |
boolean preScale (float sx, float sy)
使用指定的比例预处理矩阵。 M'= M * S(sx,sy)
Parameters | |
---|---|
sx |
float
|
sy |
float
|
Returns | |
---|---|
boolean |
boolean preScale (float sx, float sy, float px, float py)
使用指定的比例预处理矩阵。 M'= M * S(sx,sy,px,py)
Parameters | |
---|---|
sx |
float
|
sy |
float
|
px |
float
|
py |
float
|
Returns | |
---|---|
boolean |
boolean preSkew (float kx, float ky)
用指定的偏斜预处理矩阵。 M'= M * K(kx,ky)
Parameters | |
---|---|
kx |
float
|
ky |
float
|
Returns | |
---|---|
boolean |
boolean preSkew (float kx, float ky, float px, float py)
用指定的偏斜预处理矩阵。 M'= M * K(kx,ky,px,py)
Parameters | |
---|---|
kx |
float
|
ky |
float
|
px |
float
|
py |
float
|
Returns | |
---|---|
boolean |
boolean preTranslate (float dx, float dy)
用指定的翻译预处理矩阵。 M'= M * T(dx,dy)
Parameters | |
---|---|
dx |
float
|
dy |
float
|
Returns | |
---|---|
boolean |
boolean rectStaysRect ()
如果将矩形映射到另一个矩形,则返回true。 如果矩阵是标识,仅标度或旋转90度的倍数,则这可以是真实的。
Returns | |
---|---|
boolean |
void set (Matrix src)
(深)将src矩阵复制到此矩阵中。 如果src为空,则将此矩阵重置为单位矩阵。
Parameters | |
---|---|
src |
Matrix
|
boolean setConcat (Matrix a, Matrix b)
将矩阵设置为两个指定矩阵的连接并返回true。
这两个矩阵中的任何一个也可能是目标矩阵,即 matrixA.setConcat(matrixA, matrixB);
是有效的。
在GINGERBREAD_MR1
及更低版本中,只有在可以表示结果的情况下,此函数才返回true。 在HONEYCOMB
及以上,它总是返回true。
Parameters | |
---|---|
a |
Matrix
|
b |
Matrix
|
Returns | |
---|---|
boolean |
boolean setPolyToPoly (float[] src, int srcIndex, float[] dst, int dstIndex, int pointCount)
设置矩阵,使得指定的src点将映射到指定的dst点。 “点”表示为一个浮点数组,顺序为[x0,y0,x1,y1,...],其中每个“点”为2个浮点值。
Parameters | |
---|---|
src |
float : The array of src [x,y] pairs (points) |
srcIndex |
int : Index of the first pair of src values |
dst |
float : The array of dst [x,y] pairs (points) |
dstIndex |
int : Index of the first pair of dst values |
pointCount |
int : The number of pairs/points to be used. Must be [0..4] |
Returns | |
---|---|
boolean |
true if the matrix was set to the specified transformation |
boolean setRectToRect (RectF src, RectF dst, Matrix.ScaleToFit stf)
将矩阵设置为比例并转换将源矩形映射到目标矩形的值,如果可以表示结果,则返回true。
Parameters | |
---|---|
src |
RectF : the source rectangle to map from. |
dst |
RectF : the destination rectangle to map to. |
stf |
Matrix.ScaleToFit : the ScaleToFit option |
Returns | |
---|---|
boolean |
true if the matrix can be represented by the rectangle mapping. |
void setRotate (float degrees, float px, float py)
将矩阵设置为以指定的度数旋转,其中的轴心点位于(px,py)处。 枢轴点是指定转换时应保持不变的坐标。
Parameters | |
---|---|
degrees |
float
|
px |
float
|
py |
float
|
void setRotate (float degrees)
将矩阵设置为以(0,0)为中心旋转指定的度数。
Parameters | |
---|---|
degrees |
float
|
void setScale (float sx, float sy)
将矩阵设置为通过sx和sy进行缩放。
Parameters | |
---|---|
sx |
float
|
sy |
float
|
void setScale (float sx, float sy, float px, float py)
将矩阵设置为通过sx和sy进行缩放,其中的轴心点位于(px,py)处。 枢轴点是指定转换时应保持不变的坐标。
Parameters | |
---|---|
sx |
float
|
sy |
float
|
px |
float
|
py |
float
|
void setSinCos (float sinValue, float cosValue, float px, float py)
将矩阵设置为以指定的正弦和余弦值旋转,其中的轴心点位于(px,py)处。 枢轴点是指定转换时应保持不变的坐标。
Parameters | |
---|---|
sinValue |
float
|
cosValue |
float
|
px |
float
|
py |
float
|
void setSinCos (float sinValue, float cosValue)
将矩阵设置为按指定的正弦和余弦值旋转。
Parameters | |
---|---|
sinValue |
float
|
cosValue |
float
|
void setSkew (float kx, float ky)
将矩阵设置为通过sx和sy偏斜。
Parameters | |
---|---|
kx |
float
|
ky |
float
|
void setSkew (float kx, float ky, float px, float py)
将矩阵设置为通过sx和sy偏斜,其中的轴心点位于(px,py)处。 枢轴点是指定转换时应保持不变的坐标。
Parameters | |
---|---|
kx |
float
|
ky |
float
|
px |
float
|
py |
float
|
void setTranslate (float dx, float dy)
将矩阵设置为通过(dx,dy)进行平移。
Parameters | |
---|---|
dx |
float
|
dy |
float
|
void setValues (float[] values)
将数组中的9个值复制到矩阵中。 根据Matrix的实现,这些可能会被转换为矩阵中的16.16个整数,这样随后对getValues()的调用将不会产生完全相同的值。
Parameters | |
---|---|
values |
float
|
String toString ()
返回对象的字符串表示形式。 通常, toString
方法将返回一个“文本地表示”该对象的字符串。 结果应该是一个简洁但内容丰富的表述,对于一个人来说很容易阅读。 建议所有子类重写此方法。
类Object
的toString
方法返回一个字符串,其中包含对象为实例的类的名称,符号字符“ @
”以及对象的哈希代码的无符号十六进制表示形式。 换句话说,这个方法返回一个字符串,其值等于:
getClass().getName() + '@' + Integer.toHexString(hashCode())
Returns | |
---|---|
String |
a string representation of the object. |
void finalize ()
当垃圾收集确定没有更多对该对象的引用时,由对象上的垃圾回收器调用。 子类会覆盖finalize
方法以处置系统资源或执行其他清理。
的常规协定finalize
是,它被调用,如果当在Java TM虚拟机已确定不再有由该目的可以通过还没有死亡,除了作为一个动作的结果的任何线程访问的任何手段取决于某些其他可以完成的对象或类别的最终定稿。 finalize
方法可以采取任何行动,包括使该对象再次可用于其他线程; 然而, finalize
的通常目的是在对象被不可撤销地丢弃之前执行清理操作。 例如,表示输入/输出连接的对象的finalize方法可能会执行显式I / O事务,以在永久丢弃该对象之前中断连接。
类Object
的finalize
方法Object
执行特殊操作; 它只是正常返回。 Object
子类可能会覆盖此定义。
Java编程语言不保证哪个线程将为任何给定的对象调用finalize
方法。 但是,保证调用finalize的线程在调用finalize时不会保留任何用户可见的同步锁。 如果finalize方法引发未捕获的异常,则忽略该异常,并终止该对象的终止。
在针对对象调用 finalize
方法后,不会采取进一步的操作,直到Java虚拟机再次确定不再有任何途径可以通过任何尚未死亡的线程访问此对象,包括可能的操作通过准备完成的其他对象或类别,此时该对象可能被丢弃。
对于任何给定的对象,Java虚拟机不会多次调用 finalize
方法。
finalize
方法引发的任何异常 finalize
导致此对象的终止被暂停,但会被忽略。
Throws | |
---|---|
Throwable |