Android 中的 Matrix

Matrix 是 Android SDK 提供的一个矩阵类,它代表一个 3 X 3 的矩阵

Matrix主要可以对图像做4种基本变换

  • Translate 平移变换
  • Rotate 旋转变换
  • Scale 缩放变换
  • Skew 错切变换

Matrix类中的方法,主要也是和这四个变换相关,只是对计算过程做了封装,作用对象是Bitmap而不是Canvas

利用 Matrix 来进行 Translate(平移)、Scale(缩放)、Rotate(旋转)的操作,就是在操作着这个矩阵中元素的数值来达到我们想要的效果。

1. 为什么 Matrix 是一个 3 X 3 的矩阵?

其实 2 X 2 的矩阵是足以表示的,不过是为了方便计算而合并写成了 3 X 3 的格式。

2. Matrix的作用?

  • MTRANS_X、MTRANS_Y 同时控制着 Translate
  • MSCALE_X、MSCALE_Y 同时控制着 Scale
  • MSCALE_X、MSKEW_X、MSCALE_Y、MSKEW_Y 同时控制着 Rotate
  • 从名称上看,我们可以顺带看出 MSKEW_X、MSKEW_Y 同时控制着 Skew

3. 示例:

@Override
protected void applyTransformation(float interpolatedTime, Transformation t) {
        Matrix matrix = t.getMatrix();
        matrix.preScale(interpolatedTime, interpolatedTime);//缩放
        matrix.preRotate(interpolatedTime * 360);//旋转
        //下面的Translate组合是为了将缩放和旋转的基点移动到整个View的中心,不然系统默认是以View的左上角作为基点
        matrix.preTranslate(-mWidth / 2, -mHeight / 2);
        matrix.postTranslate(mWidth / 2, mHeight / 2);
}

实际上这几行代码用矩阵来表示就相当于如下所示:

参考:http://www.jianshu.com/p/11e062284491

http://geek.csdn.net/news/detail/89873

时间: 2024-10-07 21:20:52

Android 中的 Matrix的相关文章

Android中的Matrix类介绍

Matrix顾名思义就是大学的线性代数中的矩阵,关于矩阵的基本知识和加减乘除运算这里不再赘述. Android中的Matrix类是一个比较简单的3x3的3阶矩阵,结构如下: float matrix = {MSCALE_X, MSKEW_X, MTRANS_X, MSKEW_Y, MSCALE_Y, MTRANS_Y, MPERSP_0, MPERSP_1, MPERSP_2 }; 结构如上:其中 MSCALE_X和MSCALE_Y分别是控制X轴和Y轴方向的缩放,MSKEW_X和MSKEW_Y是

Android中图像变换Matrix的原理、代码验证和应用

转自 http://biandroid.iteye.com/blog/1399462 第一部分 Matrix的数学原理 在Android中,如果你用Matrix进行过图像处理,那么一定知道Matrix这个类.Android中的Matrix是一个3 x 3的矩阵,其内容如下: Matrix的对图像的处理可分为四类基本变换: Translate           平移变换 Rotate                旋转变换 Scale                  缩放变换 Skew    

Android中图像变换Matrix的原理、代码验证和应用(二)

注:本篇文章为转载文章,因为原文格式排版较乱,但是内容非常棒,所以整理一下,方便以后查看. 查看原文请戳:http://blog.csdn.net/pathuang68/article/details/6991988 Matrix介绍文章请戳:http://blog.csdn.net/pathuang68/article/details/6991867 package com.pat.testtransformmatrix; import android.app.Activity; import

android: android 中的Matrix (android.graphics.Matrix) (转)

本篇博客主要讲解一下如何处理对一个Bitmap对象进行处理,包括:缩放.旋转.位移.倾斜等.在最后将以一个简单的Demo来演示图片特效的变换. 1. Matrix概述 对于一个图片变换的处理,需要Matrix类的支持,它位于"android.graphics.Matrix"包下,是Android提供的一个3*3 矩阵工具类: 它本身不能对图像或View进行变换,但它可与其他API结合来控制图形.View的变换,如Canvas.Matrix提供了一些方法来控制图片变换: setTrans

Android进阶之Matrix完全解析

官方文档镇楼 https://developer.android.com/reference/android/graphics/Matrix.html The Matrix class holds a 3x3 matrix for transforming coordinates. Matrix是一个用于坐标变换的3*3矩阵 矩阵乘法变换基础 矩阵乘法公式 若一矩阵的列数与另一矩阵的行数相等,则可定义这两个矩阵的乘积.如 A 是 m×n 矩阵和 B 是 n×p矩阵,它们是乘积 AB 是一个 m×

Android 中的图像特效(Matrix)

以前在线性代数中学习了矩阵,对矩阵的基本运算有一些了解,现在在Android中有一个Matrix类,它的中文意思就是矩阵.Matrix主要是用于图像的缩放.平移.旋转.扭曲等操作.图像处理,主要用到的是乘法. 下面是一个乘法的公式: 在Android里面,Matrix由9个float值构成,是一个3*3的矩阵.如下图 其含义如下: sinX和cosX,表示旋转角度的cos值和sin值(旋转角度是按顺时针方向计算的).translateX和translateY表示x和y的平移量.scale是缩放的

Android中Matrix开发汇总

开发中遇到一些涉及到Matrix的地方,现在此归纳,便于日后查阅. 通过对ImageView设置Matrix来实现ImageView中图片的单指拖动和两指缩放 核心方法: imageView.setImageMatrix(matrix); 所以我们的重点在于去操作一个Matrix. 该处主要用到的是利用Matrix实现缩放(Scale)和位移(Translate) Android图片旋转,缩放,位移,倾斜,对称完整示例(一)--imageView.setImageMatrix(matrix)和M

Android中Matrix的pre post set方法理解(转载来源:Linux社区 作者:zjmdp)

虽说以前学习过线性代数和图形学原理,但是在实际中碰到matrix还是疑惑了好一阵子,今天通过向同事请教终于找到一点门路,特总结如下: Matrix主要用于对平面进行缩放,平移,旋转以及倾斜操作,为简化矩阵变换,Android封装了一系列方法来进行矩阵变换,其中包括pre系列方法:preScale,preTranslate,preRotate,preSkew,set系列方法:setScale,setTranslate,setRotate,setSkew,post系列方法:postScale,pos

浅谈android中图片处理之图形变换特效Matrix(四)

今天,我们就来谈下android中图片的变形的特效,在上讲博客中我们谈到android中图片中的色彩特效来实现的.改变它的颜色主要通过ColorMatrix类来实现. 现在今天所讲的图片变形的特效主要就是通过Matrix类来实现,我们通过上篇博客知道,改变色彩特效,主要是通过ColorMatrxi矩阵的系数,以及每个像素点上所对应的颜色偏移量.而今天的图形变换与那个也是非常的类似.它是一个3*3矩阵,而颜色矩阵则是一个4*5的矩阵.在这个3*3矩阵中则表述出了每个像素点的XY坐标信息.然后通过修